2016-11-17 128 views
-1

通過實例最好的描述:JS - 訪問全局變量問題

我有下面的代碼:

/* YIELDS ERROR 
$('body').on('DOMNodeInserted', '.zeon-merchandise-measure', function() { 
    dropdownCssClass : 'zeon-select2-dropdown', 
    data: merchandise_measures 
}); 
*/ 

// OK 
$(".zeon-merchandise-measure").select2({ 
    dropdownCssClass : 'zeon-select2-dropdown', 
    data: merchandise_measures 
}); 

我不能undesrand什麼是錯的範圍。第二個功能工作正常,而DOMNodeInserted -part無法識別merchandise_measures

這裏的merchandise_measures是如何定義'(加載HTML網頁)

<script type="text/javascript"> 
      // A global variables 
      merchandise_measures = {{ merchandise_measures_json|safe }}; 
</script> 

我在做什麼錯?

+2

第一個是無效的語法,沒關係範圍界定問題。這是一個正在運行的函數回調,與作爲參數傳遞的對象相反。 –

+0

^還有另一個錯誤,'{{merchandise_measures_json | safe}}'不能用作對象構造函數,但是塊聲明? – Hydro

+0

你幾乎在第一個例子中創建標籤,但是顯示逗號。 – Hydro

回答

-1

第一個示例的語法無效。您正在傳遞一個函數並將其用作對象。我不知道你的整個代碼,你想達到什麼,但這是更有效的:

$('body').on('DOMNodeInserted', '.zeon-merchandise-measure', function() { 
    var myObject = {  
     dropdownCssClass : 'zeon-select2-dropdown', 
     data: merchandise_measures 
    } 
}); 
+0

請注意,如果沒有逗號分隔「LABELS」,該函數仍然有效(有效的語法),bcuz JavaScript有標籤,並且在聲明對象道具時它們很相似。 – Hydro