我在角度指南上读到表达式无法评估条件。
我在控制器中有一个var $scope.a = 2;
如果我这样做的话:
ng-show={{a==2}}
---然后ng-show变成了一个正确的真理
但如果我这样做:
ng-if={{a==2}}
- 然后这不会显示
为什么表达式的行为发生了变化?
答案 0 :(得分:2)
ng-if需要表达式,但是将它绑定到表达式结果。
这有效:
<div ng-if="1==1">visible</div>
<div ng-if="1==2">not visible</div>
行为不同的原因是因为ng-if的优先级为600.而ng-show没有优先级。如果我从指令中删除优先级,它就可以使用绑定作为值,但会打破其他内容,这就是为什么他们添加了优先级。
首先编译高prio,因此在{{expression}}被评估为javascript可以理解的内容之前执行该指令。
来自angular docs:http://docs.angularjs.org/api/ng/service/ $ compile
优先
当在单个DOM元素上定义了多个指令时,有时需要指定应用指令的顺序。优先级用于在调用编译函数之前对指令进行排序。优先级定义为数字。首先编译具有更高数字优先级的指令。预链接功能也按优先级顺序运行,但后链接功能以相反的顺序运行。具有相同优先级的指令的顺序是未定义的。默认优先级为0。