【问题标题】:Ext Window is not getting closeExt Window 没有关闭
【发布时间】:2016-08-02 05:36:21
【问题描述】:

我有一个窗口,上面有两个项目。在第二项 panel 中,在面板的项目中,我正在将一些数据推送到 afterrender。之后,所有其他操作都正常进行,但没有关闭窗口。

 afterrender: function(){
    var p = this;
    var grid = Ext.getCmp('GRID');
    var record = grid.getSelectionModel().getSelections();
    var actionRecItemsLen = record.length;
    var recItem = p.items.items;
    for(var i=0;i<actionRecItemsLen; i++){
            var clsName = new Recordrfc();  // Getting a container class.
            recItem.push(clsName); 
        }
            this.doLayout();
}

当我使用recItem.push(clsName); 时,close 图标和取消按钮不起作用。一段时间后页面变得无响应。我在做什么可能的错误。

【问题讨论】:

  • 你的 Recordrfc() 是什么?

标签: javascript extjs panel extjs3


【解决方案1】:

你应该使用容器的 add 方法(窗口是容器)来添加新的组件。 items 属性只是用于存储添加的组件的集合。要将新组件添加到容器需要更多的操作,而不仅仅是将对象添加到集合项,所有这些操作都放在 add 方法中。试试这个:

 afterrender: function(){        
        var grid = Ext.getCmp('GRID');
        var record = grid.getSelectionModel().getSelections();
        var actionRecItemsLen = record.length;        
        for(var i=0; i < actionRecItemsLen; i++){
            var clsName = new Recordrfc();  // Getting a container class.
            this.add(clsName); 
        }

        this.doLayout();
    }

【讨论】:

  • 是的,但在这种情况下它只添加了一个clsName 。这样for循环的存在就无关紧要了。
  • 感谢您的回答。
  • 您在每次循环迭代时创建新项目。我认为我的代码应该与您的代码完全一样,但我使用 add() 方法添加新组件。因此,它应该在网格中的每个选择上创建一个新的 Recordrfc 实例,并将其添加到组件中。我认为 Recordrfc 的问题,也许不能多次创建?让我们尝试手动添加两次:afterrender: function(){ var clsName1 = new Recordrfc(); this.add(clsName1); var clsName2 = new Recordrfc(); this.add(clsName2); this.doLayout(); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2010-11-17
  • 2017-11-08
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多