0

У меня есть вход, который использует ng-value с фильтром для отображения номера.Как использовать как ng-значение, так и ng-класс без дублирования?

<input ng-value="myDataCollection | customFilter"> 

Я хочу также применить ng-class, чтобы изменить цвет текста на красный, если отрицательный.

<input ng-value="myDataCollection | customFilter" ng-class="{'negative-input': (myDataCollection | customFilter) < 0}"> 

Это работает, но в моем случае фильтр имеет много работы, чтобы вычислить результирующее значение. Вход также имеет большой вложенный ng-repeat, поэтому производительность является проблемой.

Возможно ли использовать ng-class на основе результирующего значения входа, установленного ng-value, без необходимости пропускать фильтр дважды?

ответ

0

Это то, что я хотел бы предложить. Вы можете напрямую фильтровать значения и сохранять их в некоторой переменной модели. так что, как будто вы запускаете фильтр для сбора данных один раз, а затем используйте его в любом месте.

$scope.filteredData = yourFilterFunction(yourDataCollection);//this will be filtered data values 

<input ng-value="filteredData" ng-class="{ filteredData < 0 ? 'negative-input': ''}"> 
-1

Если я не ошибаюсь, что касается логики вы могли бы использовать ng-model вместо ng-value.

Немного plunker для вас.