2016-11-17 186 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