ExtJS使用另一个控制器/视图创建弹出窗口?

时间:2012-11-15 16:57:09

标签: extjs extjs4 extjs4.1 extjs-mvc

我有一个网格,可以点击其中的行。单击将触发一个事件,然后由控制器捕获该事件。该控制器是否有办法打开弹出窗口并调用控制器以使用其关联视图填充该弹出窗口?这就是我现在在网格控制器中的内容:

init: function() {
    ...
    this.control({
        'shipmentsgrid': {
            itemrowclick: this.itemRowClick
        }
    })
},
itemRowClick: function() {
    var win = new Ext.Window({var win = new Ext.Window({
        items: [{
            xtype: 'shipmentmonthly' // This is not recognized
        }]
    }).show();
}

1 个答案:

答案 0 :(得分:2)

我不太确定您要归档的内容。但您可以使用从任何控制器范围调用的 getController('YourControllerName') 轻松获取另一个控制器的实例。这将为您呈现此控制器的实例(甚至加载必要的类)。现在,您可以使用任何参数自由调用此控制器上的任何方法。例如,您也可以将此控制器的实例作为参数提供,并将其作为范围提供或使用this(但这取决于您的实现)

对于你的例子:

itemRowClick: function() {
    var ctrl = this.getController('Controller2');
    var win = ctrl.openWin();
    win.show();
}

//驻留在控制器2中

openWin: function() {
    var win = Ext.create('Ext.window.Window',{
        items: [{
            xtype: 'shipmentmonthly' // This is not recognized
        }]
    });
    return win;
}