私のプロジェクトがに必要としてJavaScriptを読み込む:グローバル変数へ動的グローバルVAR
- 設定値
- その変数に変更して、再度同じjavascriptの間をロードし、このグローバル変数
を使用して外部のJavaScriptを読み込みます外部Javascriptを(GoogleのBlocklyを使用して)ようになります。
Blockly.Blocks[block_name+'_autogetter_state'] = { init: function() { this.setName(block_name); } };
グローバル変数はブロック名です。私はそこに変数を渡しているので、それは変数に渡され、値は渡されないようです。 JavaScriptを2回呼び出してHTMLにロードすると、両方のブロックが同じように見えます。 AJAX経由
$('#htmlElement').append('<script src="' + jsURL + '" type="text/javascript"><\/script>');
もが、その後<script>
タグの間HTMLにそれをロードします。
おそらく私はJavaScriptをロードする方法は重要ではありません、私が試してみました。
ので、インポートしたコードは、その後、次のようになります。最初にAも、あなたが名前のブロックを使用するときに、第2のB.楽しい部分が来るはずですしつつ、第1ブロックは、また名前= Bと第二である一方、
<script> var block_name='';</script>
<div id="htmlElement">
<script>
block_name='A';
Blockly.Blocks[block_name+'_autogetter_state'] = {
init: function() {
this.setName(block_name);
}
};
block_name='B';
Blockly.Blocks[block_name+'_autogetter_state'] = {
init: function() {
this.setName(block_name);
}
};
</script>
</div>
それは動作するので、システムは名前Aのブロックを知っていますが、名前Bで表示します。
非同期にロードされている間、グローバル変数はAで半分満たされ、Bになります.Blocksが引き継ぎ、Bとして登録します。
しかし今は私が行っているように、グローバル変数をインポートされたJavaScriptに渡すことに問題はないことを確認したいと思います...そして、私の創造性はすでにこのケースではかなり消えてしまっているので、任意の提案に開放しています...
具体的な問題は本当に明確ではありません。 – charlietfl
こんにちはcharlietfl、私はそれを仕事にして、あなたの解決策が正しいいくつかの裁判の後、何が起こっていたのか何らかの詳細な説明をしてください。私はそれを見ることができるので、グローバル変数を使用するのはすべて誤りですが、ソリューションではforEach関数のプライベート変数が使用されるため、ブロック関数はグローバルではないので同じ変数を使用しません。そうですか?どうもありがとうございました! – Wenza
また申し訳ありませんが、以前のコメントは半分でした。私はそれを通過し、それを削除しましたが、それ以降のテストでは動作していたので、古いコメント – Wenza