JS -

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

を認識することができない間に、第2の機能は、[OK]を作品ここで私が間違って何をやっている

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

(HTMLページがロードされている)が定義されているか `merchandise_measuresですか?

+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