-1

我有以下代码来调用页面中每个按钮的函数。

       dojo.query('.btn').forEach(function(item){
        Obj =   new MyClass(item); // class calls the ajax request on error of each btn click I have to handle some functionality in below function showError
        dojo.connect(Obj, 'showError', dojo.hitch(Obj, function(errors){
            console.log(Obj + 'came');
        }));

在这里,我尝试使用 dojo.hitch 来维护每个对象 Obj 的状态,但它没有维护。只有第一个 Obj 正在触发。对于第二个 Button,第一个 Obj 也在触发。这里有什么我遗漏的吗?

4

1 回答 1

0

Obj被声明为全局变量。试着var在它前面放一个。例如:

var Obj = new MyClass(item);

如果您不提供var,它将创建一个全局可访问的变量,名为Obj. 这意味着每次循环时,都会引用同一个全局变量。这样做的结果是每个按钮都连接到相同Obj的(这就是两个按钮连接到同一个对象的原因)。

另外,请阅读StackOverflow 上的这个问题,以获得有关声明变量和全局范围的更详细的视图。

于 2013-09-23T08:57:44.180 回答