Javascript 检测<;ng包括src=“…”&引用&燃气轮机;荷载
我在模态内部使用Javascript 检测<;ng包括src=“…”&引用&燃气轮机;荷载,javascript,angularjs,angularjs-ng-include,deferred-rendering,Javascript,Angularjs,Angularjs Ng Include,Deferred Rendering,我在模态内部使用,根据一些选项有条件地加载不同的内容 当以一种模式(heh)或另一种模式启动模式时,或当用户更改下拉列表时,将选择内容 在上述任何情况下,我的模板中类似这样的部分都会加载正确的模态内容: <!-- Load in the correct modal contents --> <ng-include src="'modals/contents-'+ form.type +'.html'"></ng-include> 然后它加载modals/
,根据一些选项有条件地加载不同的内容
当以一种模式(heh)或另一种模式启动模式时,或当用户更改下拉列表时,将选择内容
在上述任何情况下,我的模板中类似这样的部分都会加载正确的模态内容:
<!-- Load in the correct modal contents -->
<ng-include src="'modals/contents-'+ form.type +'.html'"></ng-include>
然后它加载modals/contents addressForm.html
或任何情况
诀窍是,不同的形式有不同的大小。当它们加载时,模态需要重新定位自身
我在窗体上尝试了$watch
。键入变量。这会在模式启动时检测更改和初始值,但重新定位发生得太快,因为ng include
尚未加载到内容中。我试过推迟,但这并不总是足够长。我可以尝试任意长度的超时,但这似乎。。。武断的
有没有办法知道任何ng何时包括负载?当下一个ng包含加载时?根据,您应该能够听到一个名为$includeContentLoaded
的范围事件来说明这一点
$scope.$on('$includeContentLoaded', function () {
// it has loaded!
});
读这本书
加载新分部时要计算的onload(可选)表达式
太棒了!它说目标是“当前的ngInclude范围”。这些事件是在作用域树上冒泡还是在DOM树上冒泡?面向对象。。。或者两者都没有。我可以晚些时候知道,但我今晚要退房。谢谢@GregL!它们在范围树上冒泡。Angular源中的实际行是:currentScope.$emit(“$includeContentLoaded”)代码>。我们知道,$emit()
在作用域链上向上发送事件($broadcast()
从目标作用域向下发送事件)。“目标范围”(事件发射/广播的原始范围)可通过访问$event
对象的targetScope
属性进行访问,该对象作为作用域事件处理程序函数的第一个参数传递。更新:在模式父作用域侦听$includeContentLoaded
事件非常有效。在某些情况下,我有许多内容区域,因此每当加载任何内容区域时,我都会对事件处理程序进行解块并重新定位模式。我还可以获取参数[0]。targetScope
,但我无法从中找出原始触发ng include src路径,可以吗?如果使用多个include,它将触发多次,因此请小心使用@海市蜃楼的答案要好得多。
<!-- Load in the correct modal contents -->
<ng-include src="'modals/contents-'+ form.type +'.html'"
onload="myFunction()"></ng-include>