Как использовать фильтр AngularJS в ngClass?
Я изучаю AngularJS и играю с учебником.
Я изменяю фильтр примера учебника, чтобы вернуть некоторую строку:
angular.module('phonecatFilters', []).filter('checkmark', function() {
return function(input) {
return input ? 'true-class' : 'false-class';
};
});
И я хотел бы использовать это в ngClass
следующим образом:
{{phone.trueVal | checkmark}} <i ng-class="{{phone.trueVal | checkmark }}"></i>
{{phone.falseVal | checkmark}} <i ng-class="{{phone.falseVal | checkmark }}"></i>
Результаты:
true-class <i class="false-class">
false-class <i class="false-class">
Теперь.. пока для простого просмотра фильтр работает так, как ожидалось.. почему он не работает для ngClass? Каким будет правильный способ использования отфильтрованного значения в ngClass
(и других подобных ngSrc
и т.д.).
Ответы
Ответ 1
В вашем случае вы должны использовать class
вместо ng-class
, потому что вы визуализируете имя класса непосредственно на html без оценки.
<div ng-controller="MyCtrl">
<i class="{{phone.trueVal | checkmark }}">{{phone.trueVal | checkmark}}</i>
<i class="{{phone.falseVal | checkmark }}">{{phone.falseVal | checkmark}}</i>
</div>
DEMO
Ответ 2
Это сработало для меня. Просто смотрел на AngularJS, поэтому я не уверен, что функциональность была добавлена как часть обновления, так как этот вопрос пару лет.
ng-class="{ 'has-error': (login.form | validField:'username') }"
После добавления скобок он работал.