Angular js $compile Javascript 窗口范围
Angular Js $compile Javascript Window Scoping
我在角度 ui 引导模态内部this
的范围方面遇到了问题。当我在模态之外运行以下代码时,我没有问题:
var GlobalVariable = GlobalVariable || {};
(function(){
doSomethingWith(GlobalVariable.field);
})();
当在$modal之外调用时,GlobalVariable.field是完全可访问的。一旦我在$modal中运行此代码,GlobalVariable.field就是未定义的。现在我可以通过直接访问窗口来解决此问题。$modal对话框中的 GlobalVariable.field,但问题是在这种情况下doSomethingWith
方法是需要访问全局变量的第三方库。我不打算遍历所有第三方库并将"window."添加到所有全局范围的变量中。
我知道当我调用 $modal.open 传入一些 HTML 时,它会通过角度$compile函数(我认为eval()
HTML 作为过程的一部分)被破坏。我的猜测是,当$compile处理它时,它会为它分配一个新的 this 对象,这意味着我们不会从窗口继承所有全局范围的变量。
有什么方法可以让 angular 的$compile强制"继承"窗口的全局变量一直到我的模态?
看看我从 Angular-UI 引导文档生成的这个 Plunker:
http://plnkr.co/edit/jMcvTBDcrkPU7p4gFejT?p=preview
resolve
如您所见,模态创建了一个新作用域,因此要在该作用域内使用的任何内容都必须使用"resolve"传入并返回。 当您可以传递所需的任何内容时,无需强制继承。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 正在全局范围中查找JavaScript函数
- 调整窗口大小时,可拖动的对象会出现在容器外部
- ngDialog-弹出窗口未更新范围变量
- 我应该使用 self 还是窗口来引用全局范围
- 请求动画帧范围更改为窗口
- HTML5 范围输入值在引导弹出窗口中没有变化
- Angular js $compile Javascript 窗口范围
- 此范围是指窗口
- 模态窗口中的范围(AngularJS指令)
- 为什么我需要在主干路由过滤器中指定窗口变量范围
- 为什么选择范围和弹出窗口不能在javascript中一起工作
- 模型窗口内的AngularJS范围
- 如何根据范围内的窗口大小调整网格块的大小
- 如何“解除绑定”Mapbox中的弹出窗口?只允许从一定范围内的标记弹出(当用户移动时改变)
- 是Chrome扩展内容脚本范围共享时,打开一个新的选项卡与窗口.打开(自Chrome 45)
- JavaScript DOM向窗口选择对象添加范围
- 窗口.onload范围