我有一个全局变量this.myItems。 在ext js中,我创建了一个按钮,在其处理程序中我无法访问this.myItems。在处理程序中,这指的是按钮,我如何绑定到gobal对象?有什么办法吗?
答案 0 :(得分:2)
你说你有一个全局变量this.myItems
。 JavaScript中的this
永远不是全局变量。 this
指的是执行代码的范围内的对象的当前实例。
现在你的问题。实现这一目标的方法不止一种。
而不是使用带有函数的handler
,您可以使用listeners
,它允许您将范围作为参数传递。
listeners: {
click: {
fn: function(button){},
scope: //put here the variable you want to access with this
}
}
使用addListener
,您还可以指定范围。
将处理程序函数定义为控制器的方法。而不是在视图中设置处理程序,而是在控制器的init
方法中设置。
init: function() {
this.control({
'button': { click: this.onButtonClick}
});
},
onButtonClick: function(button) {
我更喜欢第三种解决方案,因为它允许视图和行为之间的清晰分离。 MVC也是获得可维护代码的良好基础。