4

リストの項目が選択されたら、次のコード行を実行します。

this.details = Ext.create('EventManager.view.EventInfoView');
this.getNavigationView().push(this.details);

だから私は新しいビューを作成し、それをナビゲーションビューにプッシュします。私のコントローラーでは、新しく作成されたビュー内にあるacceptEventButtonのタップをリッスンします。

Ext.define('EventManager.controller.eventController', {
extend: 'Ext.app.Controller',
config: {
    refs: {
        acceptEventButton: '#acceptEventButton'
    },

    control: {
        "acceptEventButton": {
            tap: 'onAcceptButtonTap'
        }
    }
},
...

このビューが初めてナビゲーション ビューに配置されると、ボタン タップが機能します。戻るボタンを押して別のビューを押すと、ボタンは何もしません。

これは今のロジックをそのままにして解決したいです。ビューの作成中にイベントリスナーを自分で追加してからプッシュしたくありません。

この問題が存在する場所と修正方法はありますか?

4

3 に答える 3

5

リストされていないプロパティを追加できる新しいバージョンの sencha Architect がリリースされました。

ボタンにアクションフィールドを追加し、そのアクションに反応するコントローラーでこれを解決しました。

{
    xtype: 'button',
    id: 'acceptEventButton',
    ui: 'confirm',
    text: 'Accept',
    action: 'acceptEvent'
}

私のコントローラーには、次のコード行があります

    control: {
        "button[action=acceptEvent]": {
            tap: 'onAcceptButtonTap'
        }
    }
于 2012-04-19T11:36:14.180 に答える
2

以前に同じ問題に直面しましたが、navigationView の設定で
autoDestroy: falseを設定することで解決しました

この autoDestroy プロパティに false を適用すると、非常にうまく機能します。
それがあなたにとってもうまくいくことを願っています。

于 2012-04-27T05:55:07.290 に答える
0

次のようにクエリを変更する必要があります。

control: {
    "button[id='acceptEventButton']": {
        tap: 'onAcceptButtonTap'
    }
}

追加情報として: これらのクエリで xtype を使用することもできます。
たとえば、次のようなナビゲーション ビューがあるとします。

Ext.define('app.view.Pages', {
    extend: 'Ext.NavigationView',
    xtype: 'pages',
    ...
}

次のようにリストをプッシュします。

Ext.define('app.view.ItemList', {
    extend: 'Ext.dataview.List',
    xtype: 'itemlist',
    ...
}

次に、次のようにクエリを記述できます。

control: {
    "pages itemlist": {
        itemtap: 'onItemTap'
    }
}
于 2012-10-16T12:19:29.590 に答える