Подтвердить что ты не робот

Проверить значение в массиве в шаблоне angular?

Есть ли способ проверить, находится ли значение в массиве в шаблоне angular? Я смотрю на что-то вроде этого:

<div ng-class="{'myClass':1 in [1,2,5]}">Yay</div>

Если myClass применяется, если 1 находится в массиве.

Возможно ли это?

И как в сторону, какой шаблонный движок точно используется с Angularjs? Где я могу найти документацию? Всякий раз, когда я пытаюсь выполнить поиск (даже официальные документы), я только показываю документы по директивам или привязке данных.

4b9b3361

Ответ 1

Вы можете использовать indexOf(), чтобы проверить, находится ли значение в массиве, а затем использовать его внутри вашего ngClass, как это (условно добавить "новый класс" ):

<div ng-class="{'newclass':([1,2,5].indexOf(2) > -1)}">Yay</div>

Или, скорее всего, вы захотите протестировать массив в своей области:

<div ng-class="{'newclass':(tarray.indexOf(1) > -1)}">Yay</div>

Предположим, например, что вы заявили tarray в своем контроллере:

$scope.tarray=[1,2,5];

демо

Что касается механизма шаблонов, он встроен в Angular. Так что на самом деле нет чего-то отдельного для поиска. Но здесь шаблон верхнего уровня, и здесь есть несколько хороших видеоуроков, которые охватывают шаблоны (например, первый один - на привязке данных), а также намного больше.

Ответ 2

Вы можете создать фильтр, чтобы проверить это. Что-то вроде:

app.filter('inArray', function() {
    return function(array, value) {
        return array.indexOf(value) !== -1;
    };
});

Затем вы можете использовать это в своем шаблоне с помощью:

<div ng-class="{'newclass': tarray | inArray : 1}">Yay</div>

Преимущество этого заключается в том, что он делает ваш шаблон более удобочитаемым.

Ответ 3

Попробуйте следующее:

ng-class="{'myClass':  !!~[1,2,5].indexOf(1)}"

если значение не находится в массиве, вы получаете 0 поэтому с!! вы получаете false