角度表达式如果条件?

时间:2014-03-18 08:55:14

标签: angularjs

我在角度指南上读到表达式无法评估条件。

我在控制器中有一个var $scope.a = 2;

如果我这样做的话: ng-show={{a==2}} ---然后ng-show变成了一个正确的真理

但如果我这样做: ng-if={{a==2}} - 然后这不会显示

为什么表达式的行为发生了变化?

1 个答案:

答案 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。