我似乎正在与我已经使用过一百万次的东西作斗争!我不明白为什么突然它不再工作了:)
我的布局
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());
是面板的标题(所以我在正确的位置定义)->似乎找不到面板的主体
有什么想法吗?完全卡住了!
我获得“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]
}]
...
我的文本字段
Ext.define('App.view.MyTextField', {
extend:'Ext.form.field.Textfield',
alias:'widget.mytextfield'
});
有什么想法吗?
最佳答案
如何以及在哪里获取父面板组件?
http://jsfiddle.net/UBb8n/1/ - 对我有用。
更新:
根据documentation :
alias: List of short aliases for class names. Most useful for defining xtypes for widgets.
所以请记住 items: {xtype: 'blah'}
!= Ext.define('My.Class.Blah', {alias: 'widget.blah'})
。
第一个只是第二个的实例。
和alias: 'widget.mycoolpanel'
只是辅助函数 Ext.widget
的简写搜索带有 xtype: 'widget.<…>'
的组件.
关于Extjs组件查询.down(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534500/