ng-if如果行为不符合预期

时间:2016-09-06 11:04:35

标签: php angularjs angular-ng-if

我有一个角度表达式{{ userInfo.activities.ids }},它是一个数组,我通过php发送角度。
现在我需要检查这个数组中的值,
我正在使用它: -

[[userInfo.activities.ids.indexOf(1) != -1]]并返回true或false 我想根据它的价值来应用ng-if。 因此我写道:

<input ng-if="{{userInfo.activities.ids.indexOf(1) != -1}} == true" checked type="checkbox">
<input ng-if="{{userInfo.activities.ids.indexOf(1) == -1}} == true" type="checkbox">

但是ng-if没有验证条件,因此没有输入任何输入。

请建议我可以用什么方法代替呢? 为了将我的模板与角度表达式分离,我使用了[[]]插值 我正在使用角度以及laravel 5.2 php。

2 个答案:

答案 0 :(得分:3)

请检查您的数组:

<input ng-if="userInfo.activities.ids[0] === -1" type="checkbox"> // if the value is a number
<input ng-if="userInfo.activities.ids[0] === '-1'" type="checkbox"> // it its a string
<input ng-if="userInfo.activities.ids.length === 0'" type="checkbox"> // if its empty

identity(===)运算符的行为与equality(==)运算符完全相同,但不进行类型转换,并且类型必须相同才能被视为相等。始终使用===或!==

答案 1 :(得分:1)

删除ng-if条件

中的大括号

如果在角度模型中使用范围变量,例如ng-if, ng-model, ng-class等,则无需使用插值(花括号)。

此外,当您的表达式评估为true或false时,您无需再次检查== true条件

<input ng-if="((userInfo.activities.ids.indexOf(1)) != -1)" checked type="checkbox">
<input ng-if="((userInfo.activities.ids.indexOf(1)) == -1)" type="checkbox">

Here is a reference