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>