我在angular-ui bootstrap模式中的this
范围内遇到问题。当我在模态之外运行以下代码时,我没有遇到任何问题:
var GlobalVariable = GlobalVariable || {};
(function(){
doSomethingWith(GlobalVariable.field);
})();

在$ modal GlobalVariable.field之外调用时,可以完全访问。只要我在$ modal中运行此代码,GlobalVariable.field就是未定义的。现在我可以通过直接访问$ modal对话框中的window.GlobalVariable.field来解决这个问题,但问题是这种情况下的doSomethingWith
方法是需要访问全局变量的第三方库。我不打算浏览所有第三方库并添加"窗口。"对所有全局范围的变量。
我知道当我调用$ modal.open传递一些HTML时,它会通过角度$ compile函数(我假设eval()
将HTML作为过程的一部分)进行修改。我的猜测是,当$ compile处理它时,它会为它分配一个新的对象,这意味着我们不会从窗口继承所有全局范围的变量。
有没有办法让我能够获得有意义的“汇编”来强制继承'窗口的全局变量一直到我的模态?
答案 0 :(得分:0)
看一下我从Angular-UI bootstrap文档中生成的这个Plunker:
http://plnkr.co/edit/jMcvTBDcrkPU7p4gFejT?p=preview
resolve
正如您所看到的,模式创建了一个新范围,因此必须使用“resolve”传递要在该范围内使用的任何内容并返回。当你可以通过任何你需要的东西时,没有必要强制继承。