javascript - ng-if 中的 AngularJS 指令不会运行

标签 javascript angularjs compilation angular-directive angular-ng-if

我有一个自定义指令 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/

相关文章:

ssl - nginx 与 ssl 编译错误

javascript - 如何判断 HTML 下拉列表是否显示选项列表

javascript - 按元素的出现对数组进行排序

javascript - 加载后引用JS和CSS文件

ruby-on-rails - Angular + Rails 应用程序无法在 heroku 上运行 - 无法实例化模块

javascript - 如何从两次或三次嵌套的 ng-repeat 范围访问 Controller 的范围?

javascript - 指令加载时间非常长,检查加载时间的方法

javascript - 使用正则表达式在pgn(棋子)中的“注释”周围添加花括号

gtk - 使用 Cygwin 编译 GTK+

c - 将程序计数器(又名指令指针)重置为 0