ExtJS4 - 如何在selectionchange上获得父网格?

Mad*_*d0g 5 extjs extjs4 extjs-mvc

我对ExtJS3没什么经验,现在从版本4开始.

在我的控制器中,我有这个:

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

如何在不使用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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Ade*_*ezj 10

刚刚发现你可以在Ext.selection.Model下使用属性视图和视图.

当您打开多个对象实例时,这可能很有用.

因此,要访问示例中的网格:

selectionchange: function (view, selected, opts) {
 //get to grid??
 var grid = view.view.ownerCt;
}
Run Code Online (Sandbox Code Playgroud)


Aru*_*n V 2

编辑

我查看了选择更改事件的文档:

selectionchange( Ext.selection.Model this, Ext.data.Model[] selected, Object eOpts )
Run Code Online (Sandbox Code Playgroud)

该视图没有被传递给selectionchange处理程序。处理此问题的一个简单方法是使用Ext.getCmp()或使用 refs,如文档中所示Ext.app.Controller

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