如何在清除以前的项目后将项目添加到extjs面板?

如何在清除以前的项目后将项目添加到extjs面板?,extjs,Extjs,您好,我使用此代码将标签项动态添加到面板,但在清除这些项并尝试再次添加新项时,不会发生任何情况: var mText = new Ext.form.Label({}); mText.draggable="constrain: true; constrainTo: mSurface"; mSurface.add(mText); mSurface.doLayout(); mText.on('move',function(t,x,

您好,我使用此代码将标签项动态添加到面板,但在清除这些项并尝试再次添加新项时,不会发生任何情况:

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应该可以工作,也许我将标签添加到面板的方式是错误的,或者我缺少了一些东西


谢谢你的建议…-)

我在苦苦挣扎后找到了解决方案…:-(((((

我只是将配置更改为:

var mText = new Ext.form.Label({id:obj.get('o_id')}); 
当我在配置中传递“id”时,“removeAll”工作正常!!!但是当我在创建组件并将其添加到面板后设置“id”时,“removeAll”不工作


我真的不知道为什么,但我很高兴能解释一下这种行为!

这不是在Ext中编码的方式。首先,不要使用关键字
new
,而是使用
Ext.create
。然后,不要使用命令式方式(创建空标签,然后配置它),但一定要使用声明方式:将配置对象传递给Ext.create。然后,您不需要先创建组件,然后再将其添加到容器中,但您可以将配置对象直接传递给
add
method-Ext将在需要时创建组件。