我有一个自定义指令 myDirective
可以在元素上执行任务。
我在 ng-if
block 中有这个指令
<div ng-if="condition">
<div my-directive></div>
</div>
像这样的 fiddle :http://jsfiddle.net/hGnvv/在我的 $http
请求加载后,只有 ng-if
条件变为真。
该指令可能在运行时编译,但从未链接,因此代码永远不会运行。如果我用 ng-show
替换 ng-if
指令工作正常。
有什么解决办法吗?
编辑:我无法使用 ng-show
,因为我在表单中有 130 个指令。无论如何运行 20 个指令,其他指令根据我的对象类型运行。
ng-if="type == 1"
然后加载这些元素ng-if="type == 2"
然后加载其他元素等
如果我将 ng-if
更改为 ng-show
,则加载表单需要 8 秒而不是 1 秒。
最佳答案
ng-if
条件最初为 false,因此该元素不存在于 DOM 中并且未链接指令。
当 ng-if 条件稍后变为 true
时,链接回调应该正确触发,如以下示例所示:
单击按钮时将 ng-if
设置为 true:http://jsfiddle.net/q05gret0/
加载$http
请求后将ng-if
设置为true:http://jsfiddle.net/fhu8ky62/1/
如果您没有遇到此行为,则问题可能出在继承范围;检查 ng-if
正在监视您的请求正在更新的同一范围变量。 This article关于父/子范围变量阴影和其他限制有几点。
关于javascript - ng-if 中的 AngularJS 指令不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735123/