2

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

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();
}
4

1 回答 1

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;
}
于 2012-11-16T12:48:54.000 回答