参考controle win Extjs Controller的最佳方式

时间:2013-02-14 17:40:38

标签: extjs4

我正在寻找一种在我的窗口中引用两个控件的好方法,使用extjs refs system。

这是我的观看代码:

Ext.define('App.view.Filter',{
extend: 'Ext.window.Window',
alias: 'widget.myfilter',
items: [
    {
        xtype: 'container',
        items: [
            {
                xtype: 'combobox'
            },
            {
                xtype: 'textfield'
            },
            {
                xtype: 'button',
                text: 'Search',
                action: 'search'
            }

        ]
    }
]

});

我想访问组合框和文本字段。我第一次尝试这样做:

refs: [
    {
        ref: 'combo',
        selector: 'myfilter combobox:first'
    },
    {
        ref: 'filter',
        selector: 'myfilter textfield:first'
    }
],

但是“过滤器”也得到了组合框。

2 个答案:

答案 0 :(得分:2)

将itemId属性添加到您的商品中:

items: [
        {
            xtype: 'combobox',
            itemId: 'myCombobox'
        },
        {
            xtype: 'textfield',
            itemId: 'myTextfield'
        },
        {
            xtype: 'button',
            text: 'Search',
            action: 'search'
        }

    ]

然后你可以像这样引用它们:

refs: [
{
    ref: 'combo',
    selector: 'myfilter #myCombobox'
},
{
    ref: 'filter',
    selector: 'myfilter #myTextfield'
}
],

你的'过滤器'参考也得到了组合框,因为组合框类继承自textfield,这就是使用itemId属性通常更好的原因。

答案 1 :(得分:0)

可替换地,

Ext.define('App.view.Filter',{
    extend: 'Ext.window.Window',
    alias: 'widget.myfilter',
    items: [{
        xtype: 'combobox',
        itemId: 'myCombobox'
    },{
        xtype: 'textfield',
        itemId: 'myTextfield'
    }]
});

window1 = Ext.create('App.view.Filter').show();
window2 = Ext.create('App.view.Filter').show();

window1.down('#myCombobox');

这样您就可以从您感兴趣的特定窗口中获取组件。 有关详细信息,请查看down的文档。

相关问题