2

我似乎在为我用过一百万次的东西而苦苦挣扎!我不明白为什么突然它不再起作用了:)

我的布局

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')

它只是返回空值。

我的输出

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'
});

任何想法为什么?

4

1 回答 1

2

您如何以及在哪里获得您的父面板组件?

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

更新

根据文件

alias:类名的短别名列表。对于为小部件定义 xtypes 最有用。

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

并且alias: 'widget.mycoolpanel'只是用 .Ext.widget搜索组件的辅助函数的简写xtype: 'widget.<…&gt;'

于 2012-05-10T14:16:16.480 回答