2012-04-18 4 views
4

リストの項目が選択されると、次のコード行が実行されます。ビューが2回目に追加されたときにボタンタップが反応しない

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' 
     } 
    } 
}, 
... 

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

私はこれを今のようにして解決したいと考えています。私はむしろ私がビューを作成しているし、それをプッシュしている間に自分自身eventlistenersを追加したいと思います。

この問題の原因と解決方法を教えてください。

+0

同じです。私はこの問題に非常に不満を感じており、 'add()'メソッドも同じようになります。私はそれがバグだと思う。 –

答えて

5

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

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

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

、私のコントローラで私は、以前と同じ問題に直面し、それが
autoDestroy設定することで解決した

control: { 
     "button[action=acceptEvent]": { 
      tap: 'onAcceptButtonTap' 
     } 
    } 
+0

コンポーネントが削除され、再度追加されたときにこれが有効になることは確かですか?あなたはまだそれをテストしましたか? –

+0

私はこれが私のために働いている。 –

+0

ありがとう!これは本当に私を助けました! – iluvpinkerton

2

次のコード行があります。私のnavigationView

の設定で偽、

このautoDestroyプロパティにfalseを適用した後、非常にうまく動作します。
あなたのためにもうまくいくことを願っています。

+0

返信ありがとうございます、 私のボタンにIDが付いていると問題はありませんか? あなたの提案通り、私の見解は破壊されず、別のバージョンも作成され追加されます。これは私が推測するアプリケーションを遅くするでしょう。 –

+0

ようこそ。しかし、私はnavigationViewのビューは、stak経由で処理され、autoDestry:falseを設定することで、現在のビューオブジェクトをスタックの先頭から削除すると思います。あなたが私が何を意味しているのか理解できるといいなあ:) – bhavin

0

次のようにあなたのクエリを変更する必要があります。余分な情報としては

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

を:あなたはまた、これらのクエリでXTYPEを使用することができます。例えば
次のようにnavigationviewを持っている場合:

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