нг-если не ведет себя, как ожидалось

У меня угловатое выражение {{ 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.

-1

Решение

Снимите брекеты в 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">

Вот ссылка

1

Другие решения

Пожалуйста, проверьте ваш массив следующим образом:

<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 (===) ведет себя идентично оператору равенства (==), за исключением того, что преобразование типов не выполняется, и типы должны быть одинаковыми, чтобы считаться равными. Всегда используйте === или! ==

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector