2013-09-23 2 views
-1

У меня есть следующий код для вызова функции на каждой кнопке на странице.Сохранение состояния объекта в javascript DOJO

 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, но это не maintaining.Only первый Obj является firing.For второй кнопки также, первый Obj является firing.Is Что я здесь отсутствует.

+0

Вы проверили, соответствует ли ваш forEachLoop правильные элементы? Что он пробирается сквозь дырявую кучу кнопок, которые вы сделали, или это ломается на первом? – MiBrock

ответ

0

Obj объявлен как глобальная переменная. Попробуйте поставить перед ним var. Например:

var Obj = new MyClass(item); 

Если вы не обеспечивают var, она будет создавать глобально доступную переменную Obj. Это означает, что каждый раз, когда вы выполняете цикл, вы ссылаетесь на одну и ту же глобальную переменную. Результатом этого является то, что каждый подключен к тому же Obj (и именно поэтому обе кнопки подключены к одному и тому же объекту).

Кроме того, прочитайте this question в StackOverflow, чтобы получить более подробное представление о объявлении переменных и глобальной области.

Смежные вопросы