【问题标题】:Unable to access global variable entire one controller in sencha无法访问 sencha 中的整个一个控制器的全局变量
【发布时间】:2013-08-27 07:31:58
【问题描述】:

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

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

我在控制台上得到这个:

Uncaught TypeError: Object [object global] has no method 'setSuccessMessage'

【问题讨论】:

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


    【解决方案1】:

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

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

    init : function() {
       me = this;
    }
    

    现在使用

    访问方法
       me.setSuccessMessage(1)
    
       me.getSuccessMessage();
    

    【讨论】:

    • 鉴于我一直在尝试但无法访问全局值,我们可以这样做吗?根据操作更改它的值。
    • @sur007 是的,你可以这样做,但在初始化内。
    • 我遇到了错误。我按照你在上面的答案中提到的做了。你的意思是不在初始化中
    • 好的,错误已经减少,但值没有改变。我能做些什么呢?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-23
        • 2015-12-05
        • 1970-01-01
        • 2014-01-17
        • 2014-04-08
        相关资源
        最近更新 更多