2

1 つのコントローラー内のグローバル値にアクセスしようとしましたが、アクセスできませんでした。私はこのHow to define global variable in sencha に従っていますが、グローバル値を設定およびアクセスできませんでした。

コントローラーで

config: {
    successMessage:100,
    control: {
      'submitnewword': {
         activate: 'onActivate',
         itemtap: 'onItemTap',
         ConfirmTestCommand:'Confirm'
        },
    .......
   },
  onSearchKeyUp: function(searchField) {
    success: function (response) {
       this.setSuccessMessage(1);
   }
   else {
     this.setSuccessMessage(0);
   }   
}

and access it

Confirm: function () {
   console.log("Confirm----- Caling on Controller");
   var testing=this.getSuccessMessage();
   console.log("Confirm----- value--"+testing);         
},

私のコードの何が問題なのかわかりません。

私はコンソールでこれを取得しています:

キャッチされていない TypeError: オブジェクト [オブジェクト グローバル] にはメソッド 'setSuccessMessage' がありません

4

3 に答える 3

1

問題はスコープに関するものであり、次の方法で解決できます。

コントローラーのinitメソッドで

init : function() {
   me = this;
}

を使用してメソッドにアクセスします

   me.setSuccessMessage(1)

   me.getSuccessMessage();
于 2013-08-27T09:36:16.043 に答える
0

スコープの可視性の問題に遭遇したと思います... onSearchKeyUp() または Confirm() から例外が発生する場所がわかりません。しかし、これはコントローラーインスタンスを指していないと思います。もっとあなたを助けるために、より多くの情報を共有する必要があります(情報源)

于 2013-08-27T09:23:44.513 に答える
0

success内部の関数onSearchKeyUpは、呼び出されたときのスコープが異なります。そのため、その内部には、 (もちろん、そのゲッターとセッター)が定義されthisているコントローラーはありません。successMessage

success解決策は、次を使用して関数をコントローラースコープに「バインド」することです。

success: Ext.bind(function (response) {
       this.setSuccessMessage(1);
}, this);
于 2013-08-28T16:26:02.913 に答える