【问题标题】:Maintaining Object state in javascript DOJO在 javascript DOJO 中维护对象状态
【发布时间】:2013-09-23 08:30:39
【问题描述】:

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

       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也在触发。这里有什么我遗漏的吗。

【问题讨论】:

  • 您是否检查过您的 forEachLoop 是否提交了正确的项目?它会循环穿过您制作的一堆 Button,还是会在第一个按钮处中断?

标签: javascript html events dojo dom-events


【解决方案1】:

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

var Obj = new MyClass(item);

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

另外,请阅读 StackOverflow 上的 this question 以获取有关声明变量和全局范围的更详细的视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多