0

Sencha Touch 2,0,1 を使用しています。

コントローラーのビューから要素を取得する必要があります。

現時点では、ビューを正しく取得するこのメソッドを使用していますが、ビューでアイテムを取得できません。test is undefined だけでエラーは発生しません。

何か案は?

コントローラーで:

var test = this.getDetailView().items['editButton'];

ビュー内のコード:

Ext.define('XXX.view.DetailView',{
   ...

   items: [

        {
            xtype: 'button',
            text: 'Edit XXX',
            ui: 'custom-btn-dwn-timetable',
            itemId: 'editButton'
        }
  ],
    ...
}
4

3 に答える 3

5

編集ボタンへの参照を取得する方法は他にもいくつかあります。次のように、編集ボタンをrefとして配線できます。

Ext.define('MyApp.Controller', {
    extend: 'Ext.app.Controller',

    config: {
        refs: {
            editButton: '#editButton'
        }
    },

次に、コントローラーで、自動生成されたゲッターthis.getEditButton()を呼び出して、実際の編集ボタン コンポーネントを取得できます。

他にできることは、次のように編集ボタンをインスタンス変数としてビューに保存することです。

Ext.define('XXX.view.DetailView',{
   ...

   items: [

        this.editButton = Ext.widget{(
            xtype: 'button',
            text: 'Edit XXX',
            ui: 'custom-btn-dwn-timetable',
            itemId: 'editButton'
        )}
  ],
    ...
}

したがって、コントローラーのボタンにアクセスするには、次のことを行う必要があります。this.getDetailView().editButton

一般に、要素が頻繁にアクセスするものである場合は、DOM をクエリするのではなく、その要素への参照を保存する必要があります (不要なパフォーマンス ヒットを回避するため)。Ext.getCmp() の使用も、実行スタックが原因で遅くなります (参照を取得するために毎回 ComponentManager を通過する必要があります)。

于 2013-02-20T20:23:25.647 に答える
1

ボタンIDをに設定してeditから

Ext.getCmp('edit').hide();
于 2013-02-13T10:22:09.220 に答える