2012-01-25 5 views
0

私はSencha Touchでカスタムイベントを発生させようとしていますが、それは発生可能なイベントに追加されているようです。イベントに応答していないようです。Sencha Touchのイベント火災に応答していないようです

Ext.apply(this, { 
     scroll: 'vertical', 
     dockedItems: [ titlebar, buttonbar ], 
     items: [ fields ], 
     listeners: { 
      beforeactivate: function() { 
       var saveButton = this.down('#userFormSaveButton'); 
        saveButton.setText('Submit'); 
        this.addEvents('cityUpdate'); 
        console.log('event added'); 

      }, 
      deactivate: function() { 
       this.resetForm(); 
      } 
     } 
    }); 

イベントはその後、ここに解雇されています:次に

if (result.data != 'false' && result.data.state) { 
     Ext.getCmp("usersForm").fireEvent('cityUpdate', result.data.towns); 
     console.log('event fired'); 
     alert('Your town is ' + result.data.towns + ' ' + result.data.state.replace(/\+/g , ' ')); 

    } 

リスナーはこちらのフォームでフィールドに適用される

イベントは、このフォーム体であり、ここでinstantinatedされます:

   { 
       xtype: 'textfield', 
       name: 'city', 
       label: 'City*', 
       placeHolder: 'New York', 
       useClearIcon: true, 
       id:'city', 
       listeners: { 
        cityUpdate: function(city) { 
         console.log('event reponse' , this.fieldEl.dom , city); 
        } 
       } 
      }, 

なぜ私はcでイベント応答の呼び出しを見ることができないのですかオンソール?イベントが追加され、イベントが発生するのが見えますが、実際にイベントを実行してコンソールのステートメントに応答したことはありません。私はコンソールに何のエラーも受けないので、ここで何が起こっているのか、多少の損失がありますか?

+0

'console.log(Ext.getCmp(" usersForm "))を実行してみてください。何が表示されるのかを確認してください。 – mowwwalker

答えて

2

フォームがイベントを発生させているようですが、フォーム上にあるテキストフィールドにリスナーを追加しました。

usersFormfireEventを呼び出す場合、そのイベントのリスナーはusersForm自体にある必要があります。

cityUpdateハンドラをコードの最初のスニペットに追加すると、同じブロック内に、beforeactivatedeactivateと同じブロックが追加されるとどうなりますか?それはイベントをキャッチしますか?もしそうなら、あなたはそれがそこに捕らえられることを期待していませんでしたか?もしそうなら、わずかな設計上の問題かもしれない。

+0

この問題を聴いていたのと同じ要素でイベントを発生させました。ありがとうございました!私の前提は、Mootoolsのように普遍的なリスナーを設定し、イベントの発言を聞かせてからコードを適切に実行させることでした – Xenology

関連する問題