【发布时间】:2016-02-26 13:06:34
【问题描述】:
我在 angular-ui 引导模式内的 this 范围内遇到问题。当我在模式之外运行以下代码时,我没有遇到任何问题:
var GlobalVariable = GlobalVariable || {};
(function(){
doSomethingWith(GlobalVariable.field);
})();
在 $modal GlobalVariable.field 之外调用时是完全可以访问的。一旦我在 $modal 中运行此代码,GlobalVariable.field 就未定义。现在我可以通过直接访问 $modal 对话框中的 window.GlobalVariable.field 来解决这个问题,但问题是在这种情况下 doSomethingWith 方法是需要访问全局变量的第 3 方库。我不打算浏览所有第三方库并添加“窗口”。作用于所有全局范围的变量。
我知道,当我调用 $modal.open 并传入一些 HTML 时,它会通过 angular $compile 函数(我假设eval()s HTML 作为该过程的一部分)被破坏。我的猜测是,当 $compile 处理它时,它会为其分配一个新的 this 对象,这意味着我们不会从 window 继承所有全局范围的变量。
有什么方法可以让 Angular 的 $compile 强制将窗口的全局变量“继承”到我的模式?
【问题讨论】:
标签: javascript angularjs closures