1

我正在开发一个应用程序,我大量使用 AJAX 调用将部分 MVC 视图导入到我的 DOM 中。

我注意到一些奇怪的零星行为,其中变量会失去它们的状态。我希望有人可以帮助我确认我对为什么会发生这种情况的怀疑

例如,我有以下部分观点: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 中建立多个版本的 Partial View 脚本块......

4

1 回答 1

2

添加由单个自调用闭包组成的脚本不会在全局命名空间中引入新变量,它只定义一个函数,然后调用它,然后由于没有外部引用而立即忘记它。

另一方面,您的局部视图在每次导入时都会在全局命名空间中引入var1,var2并覆盖以前的定义。manager这可能解释了您遇到的零星变量行为。

于 2012-06-12T21:23:04.830 回答