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