【发布时间】:2014-06-07 19:06:26
【问题描述】:
您好,我使用此代码将标签项目动态添加到面板,但是当清除项目并尝试再次添加新项目时没有任何反应:
var mText = new Ext.form.Label({});
mText.draggable="constrain: true; constrainTo: mSurface";
mSurface.add(mText);
mSurface.doLayout();
mText.on('move',function(t,x,y,eOpts){
MainForm.lbx.setText(x,false);
MainForm.lby.setText(y,false);
obj.set('o_x',parseInt(x));
obj.set('o_y',parseInt(y));
});
mText.getEl().on('render', function(t,eOpts) {cur_obj=mText;});
mText.getEl().on('click', function(e,t,eOpts) {cur_obj=mText;Tree_Select(mText.id);});
mText.getEl().on('contextmenu', function(e,t,eOpts) {e.stopEvent();cur_obj=mText;mnutxtContext.showAt(e.getXY());});
mSurface.removeAll() 什么都不做!!所以我用它来清除面板:
Ext.each(mSurface.items.items, function(cmp)
{
cmp.destroy();
//mSurface.remove(cmp); //doesn't work also
});
我已经阅读了 extjs 4.2 api 中的几乎所有内容并尝试用谷歌搜索,但没有,我认为 removeAll 应该可以工作,也许我将标签添加到面板的方式是错误的,或者我遗漏了一些东西.. .
谢谢你的建议..:-)
【问题讨论】:
-
这不是 Ext 中的编码方式。首先,不要使用关键字
new,而是使用Ext.create。然后,不要使用命令方式(创建空标签然后配置它),而是使用声明方式:将配置对象传递给 Ext.create。然后,您不需要先创建组件然后将其添加到容器中,而是可以将配置对象直接传递给add方法 - Ext 将在需要时创建组件。
标签: extjs