5

私はExtJS3の経験がほとんどなく、バージョン4から始めています。

私のコントローラーには、次のものがあります。

init: function ()
{
    this.control({
        "userlist":
        {
            selectionchange: function (view, selected, opts)
            {
                 //get to grid??
            }
        }
    });
}

IDを使用せずに、このイベントが発生したグリッドにアクセスするにはどうすればよいですか?アイテムが選択されている場合、グリッドツールバー()のボタンを有効/無効にtbarしたいが、ID(バーではなく、個々のボタンではない)を与えたくない

編集:解決策はrefs、コントローラーのプロパティを使用することでした:

refs:
[
    {
        ref: "list",
        selector: "userlist"
    }
],


selectionchange: this.activateTbButtons

activateTbButtons: function (selected, opts)
{
    if (selected.selected.length == 1)
    {
        var tb = this.getList().query("toolbar");
    }
}
4

4 に答える 4

10

属性ビューと Ext.selection.Model の下のビューを使用できることがわかりました。

これは、オブジェクトの複数のインスタンスを開く場合などに役立ちます。

したがって、例でグリッドにアクセスするには:

selectionchange: function (view, selected, opts) {
 //get to grid??
 var grid = view.view.ownerCt;
}
于 2012-11-16T14:09:57.430 に答える
3

同じ問題があり、以前の回答にいくつかの点が欠けていることがわかりました。要するに、私はお勧めします:

selectionchange: function (selModel, selected, eOpts) {
  var grid = selModel.view.ownerCt;
}

これはすでに Adezj によって提案されていましたが、最初の引数としてビューを持つ selectionchange イベントを参照しており、ExtJS 4.0.7+ には適用されません。(selectionchange が引数としてビューを持っていたとは思いませんか?)

選択モデルのビュー プロパティが API ドキュメントでまったく言及されていないため、これは ExtJS によって公式にサポートされていない可能性があることに注意してください。

もう 1 つのアプローチは、Ext.ComponentQuery.query(...) を使用するか、Arun V によって提案されているようにコントローラーで参照を定義することです。これは、基本的に Ext.ComponentQuery.query() の便利なラッパーです。これは、グリッド クラスの個々のインスタンスしかない場合はうまく機能しますが、同じグリッド クラスのインスタンスが複数ある場合は注意が必要です。Ext.ComponentQuery.query('xtype-of-your-grid') を実行するだけで、グリッドのすべてのインスタンスが返され、ユーザーがどのインスタンスで何かを選択したかを見つけるのがとても楽しくなります。

したがって、一般に、イベントを発生させたコンポーネントまたはオブジェクトから常に上に向かって作業し、コンポーネント階層の正しいブランチにいることを確認することを強くお勧めします。コントローラーを作成するクラス。

于 2013-01-23T13:33:40.597 に答える
2

編集

selectionChange イベントのドキュメントを確認しました。

selectionchange( Ext.selection.Model this, Ext.data.Model[] selected, Object eOpts )

selectionchangeビューがハンドラーに渡されていません。これを処理する簡単な方法は、次Ext.getCmp()のドキュメントに見られるように参照を使用または使用することですExt.app.Controller

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.app.Controller

于 2012-04-10T19:29:09.370 に答える
1

//グリッドを取得

var grid = selectionModel.view.ownerCt.ownerCt;
于 2014-06-13T00:39:22.237 に答える