2013-09-23 61 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(這就是爲什麼兩個按鈕都連接到同一個對象)。

此外,請閱讀StackOverflow的this question以獲取有關聲明變量和全局範圍的更詳細視圖。