Ext js:global这个变量如何使用bind在按钮处理程序中访问?

时间:2015-02-27 11:35:05

标签: extjs

我有一个全局变量this.myItems。 在ext js中,我创建了一个按钮,在其处理程序中我无法访问this.myItems。在处理程序中,这指的是按钮,我如何绑定到gobal对象?有什么办法吗?

1 个答案:

答案 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也是获得可维护代码的良好基础。