2

我一直在尝试访问一个控制器内的全局值,但无法访问它。我一直在关注如何在 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);         
},

我不知道,我的代码有什么问题。

我在控制台上得到这个:

未捕获的类型错误:对象 [object global] 没有方法“setSuccessMessage”

4

3 回答 3

1

问题与范围有关,您可以通过以下方式解决:

在您的控制器初始化方法中

init : function() {
   me = this;
}

现在使用

   me.setSuccessMessage(1)

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

我认为您遇到了范围可见性问题...我不确定从 onSearchKeyUp() 或 Confirm() 发出异常的位置。但猜测它里面 this 指向的不是控制器实例。为了帮助您更多,您需要分享更多信息(来源)

于 2013-08-27T09:23:44.513 回答
0

内部的success函数在onSearchKeyUp调用时具有不同的作用域。因此,在其中定义(当然还有它的 getter 和 setter)this的控制器不是您的控制器。successMessage

一种解决方案是使用以下方法将函数“绑定”success到控制器范围:

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