Extjs组件查询.down()

时间:2012-05-10 12:57:43

标签: extjs components textfield traversal

我似乎在努力使用我曾经使用过一百万次的东西!我不明白为什么突然之间它不再起作用了:)

我的布局

an accordion 
    > toolbar
    > tabs
        >tab 1
            > form.panel 1
                > textfield (alias: 'widget.mytextfield')
            > form.panel 2
        >tab 2
            > form.panel 1

现在是问题所在......当我在第1小组看到我试图访问文本字段(mytextfield)时

//panel, being 'tab 1 > panel 1'
var textfield = panel.down('mytextfield')

它只返回null。

我的输出

console.info(panel.down());

是面板的标题(所以我在正确的位置def) - >似乎它无法找到小组的主体

有什么想法吗?完全卡住了!

我得到的唯一方法是获得mytextfield'

var textfield = panel.items.items[0];

但是如果文本字段改变顺序,那么上面的代码当然不再有效

提前致谢!

更新

好的,我已经想出了什么......这很奇怪

如果我将文本字段从面板中取出并将其放在单独的文件中。然后使用requires添加它。我可以使用.down()

访问文本字段

例如在我的主表单面板

...
requires:['App.view.MyTextField'],
items:[{
    xtype:'mytextfield' //i can access you with .down()
},{
    xtype:'textfield',
    alias:'widget.mytextfield2' //you are showing up - but I CANT access you with .down() - only panel.items.items[0]
}]
...

myTextField将

Ext.define('App.view.MyTextField', {
    extend:'Ext.form.field.Textfield',
    alias:'widget.mytextfield'
});

任何想法为什么?

1 个答案:

答案 0 :(得分:2)

您如何以及在何处获得父面板组件?

http://jsfiddle.net/UBb8n/1/ - 适合我。

<强>已更新

根据documentation

  

<强>别名:   类名的短别名列表。   最有用的是为小部件定义xtypes。

请注意items: {xtype: 'blah'}!= Ext.define('My.Class.Blah', {alias: 'widget.blah'})。 首先,它只是第二个实例化。

alias: 'widget.mycoolpanel'只是帮助函数Ext.widget的简写,它使用xtype: 'widget.<…>'搜索组件。