无法在sencha中访问整个一个控制器的全局变量

时间:2013-08-27 07:31:58

标签: extjs sencha-touch sencha-touch-2

我一直在尝试访问一个控制器内的全局值,但无法访问它。我一直关注此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:对象[object global]没有方法   'setSuccessMessage'

3 个答案:

答案 0 :(得分:1)

问题在于范围,您可以通过以下方式解决:

在你的控制器初始化方法

init : function() {
   me = this;
}

现在使用

访问方法
   me.setSuccessMessage(1)

   me.getSuccessMessage();

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

success: Ext.bind(function (response) {
       this.setSuccessMessage(1);
}, this);