【问题标题】:How to add items to extjs panel after clearing it from previous items?从以前的项目中清除项目后,如何将项目添加到 extjs 面板?
【发布时间】: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


【解决方案1】:

苦苦挣扎后找到了解决办法..:-(((((

我只是将配置更改为:

var mText = new Ext.form.Label({id:obj.get('o_id')}); 

当我在配置中传递“id”时,“removeAll”工作正常!!!但是当我在创建组件并将其添加到面板后设置“id”时,“removeAll”不起作用......

我真的不知道为什么,但我很乐意为这种行为做出解释!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多