1

ログアウトボタンを押すと確認メッセージを設定しようとしています。ユーザーが「はい」をクリックすると、「myContainer」というコンテナのパネルコントロールにリダイレクトされます。メッセージは正常に表示されますが、「はい」を選択するとエラーが発生します(コンテナーが初期化されていないためと想定)。コントローラにコンテナへの参照を設定していますが、それは役に立たないようです。このように確認を正しく処理する方法についてのアドバイスをいただければ幸いです。ありがとう

確認メッセージ:

onLogoutTap: function(button, e, options) {
Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){
    if (button == 'yes') {
    //doesn't work:
        this.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }
});
}

コントローラのmyContainerリファレンス

myContainer: '#myContainer'

エラーメッセージ:

Uncaught TypeError: Object [object Window] has no method 'getMyContainer'
4

3 に答える 3

5

私がよく使うちょっとしたトリックはこれです

onLogoutTap: function(button, e, options) {
  var controller = this;
  Ext.Msg.confirm("Logout", "Do you wish to continue?", function (button) {
    if (button == 'yes') {
    //doesn't work:
        controller.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }
  });
}

このように、キーワードを使用して関数オブジェクトにアクセスすることもできますthis

お役に立てれば

于 2012-06-26T17:42:36.330 に答える
1

ここ:

function(button){
    if (button == 'yes') {
    //doesn't work:
        this.getMyContainer().setActiveItem(1);
    } else {
        return false;
    }

thisコントローラではなく、関数オブジェクトを参照します。

コントローラのそのメソッドを呼び出したい場合は、次のことを試してください。

Ext.getApplication().getController("your_controller_name").getMyContainer();

それが役に立てば幸い。

于 2012-06-26T17:39:13.027 に答える
0

別の方法は

onLogoutTap: function(button, e, options) {
    Ext.Msg.confirm("Logout", "Do you wish to continue?", function(button){
        if (button == 'yes') {
        //DOES WORK!!
            this.getMyContainer().setActiveItem(1);
        } else {
            return false;
        }
    }, this);
}

関数定義の後に「scope」パラメータを追加するだけです。

于 2012-06-26T18:09:43.750 に答える