2

私はこれを私の見解で定義しています:

意見:

Ext.define("MyApp.view.Welcome", {
    extend: 'Ext.Panel',
    alias: 'widget.welcomeview',


    config: {
        ///...items... removed lines for brevity.. 
        {
           xtype: 'button',
           id : 'btnSignInNow',
           text: 'Sign In Now',            
           listeners: {
               tap: function() {
               this.fireEvent("onSignInNowTap", this);
                console.log("onSignInNowTap fired"); /// <-- I see this in console.log
          }
       }
    }

これはログで確認できます。しかし、私のコントローラーでは、イベントを受信して​​いません。誰かがこれに光を当てることができますか?

コントローラ:

 config: {
        refs: {
            welcomeView: 'welcomeview'
        },

        control: {
            welcomeView: {
                onSignInNowTap: function () {
                    alert('bla!');  <!-- I Don't see this in console.log
                }
            }
        }
    }

何かを見逃した可能性があることを感謝しますが、このイベントが失われたり無視されたりする方法/場所を見つけるためにデバッグできる方法はありますか?

4

3 に答える 3

2

試す

this.parent.fireEvent("onSignInNowTap", this);

それ以外の

this.fireEvent("onSignInNowTap", this);

そうすれば、親ビューはボタンではなくイベントを発生させます。ボタンが奥深くにネストされている場合は、次のようなことをしなければならないことがあります

this.parent.parent.parent....fireEvent("onSignInNowTap", this);
于 2012-12-21T06:58:50.057 に答える
0

ビューのリスナーをinitialize内に記述します。これは、initializeで 参照されます。

 Ext.define("MyApp.view.Welcome", {
    extend: 'Ext.Panel',
    alias: 'widget.welcomeview',



 initialize:function(){
        this.callParent();
       listeners: {
          tap: function() {
             this.fireEvent("onSignInNowTap", this);
             console.log("onSignInNowTap fired");
          }
       }
    }
于 2012-12-20T03:55:00.880 に答える
0

ThinkFloydに感謝します。あなたの解決策はうまくいきました。this.parent.fireEvent(...)を使用する必要があり、コントローラーがそれをキャッチできました...

于 2013-11-22T22:54:52.293 に答える