У меня угловатое выражение {{ userInfo.activities.ids }}
, это массив, который я отправляю в angular через php.
Теперь мне нужно проверить значение в этом массиве,
Я использую это: —
[[userInfo.activities.ids.indexOf(1) != -1]]
и он возвращает истину или ложь.
Я хотел подать заявку 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.
Снимите брекеты в ng-if
состояние,
Если вы используете переменные области видимости в угловых моделях, таких как ng-if, ng-model, ng-class
и т. д., нет необходимости использовать интерполяцию (фигурные скобки).
Кроме того, поскольку ваше выражение оценивается как истинное или ложное, вам не нужно снова проверять == true
состояние
<input ng-if="((userInfo.activities.ids.indexOf(1)) != -1)" checked type="checkbox">
<input ng-if="((userInfo.activities.ids.indexOf(1)) == -1)" type="checkbox">
Пожалуйста, проверьте ваш массив следующим образом:
<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 (===) ведет себя идентично оператору равенства (==), за исключением того, что преобразование типов не выполняется, и типы должны быть одинаковыми, чтобы считаться равными. Всегда используйте === или! ==