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 に答える