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

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]
}]
...

MyTextField

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

理由はありますか?

4

1 に答える 1

2

親パネル コンポーネントをどこでどのように取得しますか?

http://jsfiddle.net/UBb8n/1/ — 私にとってはうまくいきます。

更新:

ドキュメントによると:

alias : クラス名の短いエイリアスのリスト。ウィジェットの xtype を定義するのに最も役立ちます。

したがって、items: {xtype: 'blah'}!=に注意してくださいExt.define('My.Class.Blah', {alias: 'widget.blah'})。まず、2 番目のものの単なるインスタンス化です。

Andは、でコンポーネントを検索するalias: 'widget.mycoolpanel'ヘルパー関数の省略形です。Ext.widgetxtype: 'widget.<…&gt;'

于 2012-05-10T14:16:16.480 に答える