我似乎在努力使用我曾经使用过一百万次的东西!我不明白为什么突然之间它不再起作用了:)
我的布局
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'
});
任何想法为什么?
答案 0 :(得分:2)
您如何以及在何处获得父面板组件?
http://jsfiddle.net/UBb8n/1/ - 适合我。
<强>已更新强>:
<强>别名强>: 类名的短别名列表。 最有用的是为小部件定义xtypes。
请注意items: {xtype: 'blah'}
!= Ext.define('My.Class.Blah', {alias: 'widget.blah'})
。
首先,它只是第二个实例化。
而alias: 'widget.mycoolpanel'
只是帮助函数Ext.widget
的简写,它使用xtype: 'widget.<…>'
搜索组件。