1

AJAX 呼び出しを多用して部分的な MVC ビューを DOM にインポートするアプリに取り組んでいます。

変数が状態を失う奇妙な散発的な動作に気付きました。なぜこれが起こっているのかについての私の疑いを確認するのを誰かが助けてくれることを望んでいました

Ex私は次の部分的なビューを持っています: JS:

--begin script tags
var var1 = 1;
var var2 = 2;
var manager = null;    

$(document).ready(function() 
{
  //Do stuff
  manager = new Manager();
});
--End script tag

<div>
Markup in partial view
</div>

ユーザーがボタンをクリックすると、部分ビューが私の dom に何度もインポートされます。毎回同じ要素に挿入され、効果的に毎回上書きされます。私の質問は次のとおりです。このセクションを DOM に複数回ロードすると、スクリプト ブロックが DOM に複数回追加される可能性がありますか? 部分ビューが DOM に取り込まれるたびに JS が取り残されますか?

スクリプトは大幅に簡素化されていますが、一例として、manager は初期化された後でも null になる可能性があります。私の推測では、DOM に複数のインスタンスが存在する可能性があります...

JSブロック全体を自己呼び出しクロージャーでラップすることで問題を解決できるようですが、それが必要かどうかはわかりませんでした.クロージャーが必要な理由について誰かが良い説明を持っているかどうか疑問に思っていました. 私の理論では、部分ビュー スクリプト ブロックの複数のバージョンが DOM に蓄積されるのを防ぐというものです...

4

1 に答える 1

2

単一の自己呼び出しクロージャーで構成されるスクリプトを追加しても、グローバル名前空間に新しい変数は導入されません。関数を定義するだけで、それを呼び出し、外部参照がないためすぐに忘れてしまいます。

一方、部分的なビューでは、インポートするたびにグローバル名前空間に が導入され、以前の定義が上書きされますvar1。これは、あなたが経験している散発的な変数の動作を説明するかもしれません.var2manager

于 2012-06-12T21:23:04.830 に答える