Есть ли способ сделать выражение для чего-то вроде ng-class
быть условным?
Например, я попробовал следующее:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
Проблема с этим кодом заключается в том, что независимо от того obj.value1
, что есть, проверка класса всегда применяется к элементу. Делая это:
<span ng-class="{test: obj.value2}">test</span>
Пока obj.value2
не равна истинной стоимости, класс не применяется. Теперь я могу обойти проблему в первом примере, выполнив это:
<span ng-class="{test: checkValue1()}">test</span>
Где checkValue1
функция выглядит так:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
Мне просто интересно, так ли это ng-class
должно работать? Я также создаю пользовательскую директиву, в которой я хотел бы сделать что-то похожее на это. Тем не менее, я не могу найти способ посмотреть выражение (и, возможно, это невозможно, и причину, почему это работает так).
Вот PLNKR, чтобы показать, что я имею в виду.
ng-class="'label-success': obj.value1 == 'Ready', 'label-warning': obj.value1 == 'On hold'}"
Ответы:
Ваша первая попытка была почти правильной, она должна работать без кавычек.
Вот плнкр .
Директива ngClass будет работать с любым выражением, которое оценивает true или false, немного похожее на выражения Javascript, но с некоторыми отличиями вы можете прочитать здесь . Если ваше условие слишком сложное, вы можете использовать функцию, которая возвращает true или false, как вы это делали в третьей попытке.
Просто для дополнения: вы также можете использовать логические операторы для формирования логических выражений, таких как
источник
'
противном случае, если вы хотите добавить больше классов или если у вашего класса есть дефисы или подчеркивания, они не будут работать.ng-class="{'test test-2: obj.value1 === 'value'}"
ng-class="{'test test-2': obj.value1 === 'value'}"
[class.test]="obj.value1 == 'someotervalue'"
.ng-class="{danger:!enabled || (type === 'WHEEL' && !isOnline) }
Использование ng-класса внутри ng-repeat
Для каждого статуса в task.status используется отдельный класс для строки.
источник
Angular JS обеспечивает эту функциональность в директиве класса ng . В котором вы можете поставить условие, а также назначить условный класс. Вы можете достичь этого двумя разными способами.
Тип 1
В этом коде класс будет применяться в соответствии с величиной состояния значения
если значение статуса 0, тогда примените первый класс
если значение состояния равно 1, тогда примените второй класс
если значение состояния равно 2, тогда примените класс три
Тип 2
В каком классе будет применяться значение статуса
если значение состояния равно 1 или true, тогда добавится класс test_yes
если значение состояния равно 0 или false, то добавится класс test_no
источник
<div ng-class="{'Image' || 'image': 'image-icon', 'Video' || 'video' || 'aVideo' || 'bVideo' : 'video-icon'}[resource.type]"></div>
Я вижу отличные примеры выше, но все они начинаются с фигурных скобок (карта json). Другой вариант - вернуть результат на основе вычислений. Результатом также может быть список имен классов CSS (а не только карта). Пример:
или
Объяснение: Если статус активен,
enabled
будет использован класс . В противном случае классdisabled
будет использоваться.Список
[]
используется для использования нескольких классов (не только один).источник
Существует простой метод, который вы можете использовать с атрибутом класса html и сокращением if / else. Не нужно делать это таким сложным. Просто используйте следующий метод.
Счастливое Кодирование, Ниманта Перера
источник
Я собираюсь показать вам два метода, с помощью которых вы можете динамически применять NG-класс
Шаг 1
С помощью троичного оператора
Вывод
Если ваше условие истинно, то class1 будет применен к вашему элементу, иначе будет применен class2.
Недостаток
Когда вы попытаетесь изменить условное значение во время выполнения, класс как-то не изменится. Поэтому я предлагаю вам перейти к шагу 2, если у вас есть такие требования, как динамическое изменение класса.
Шаг 2
Вывод
если ваше условие совпадает со значением1, тогда class1 будет применяться к вашему элементу, если совпадает со значением2, будет применяться class2 и так далее. И динамическое изменение класса будет хорошо работать с ним.
Надеюсь, что это поможет вам.
источник
Угловой синтаксис заключается в использовании оператора : для выполнения эквивалента модификатора if
Добавьте класс clearfix к четным строкам. Тем не менее, выражение может быть любым, что мы можем иметь в нормальном условии, если оно есть, и оно должно оцениваться как истинное или ложное.
источник
Использование функции с классом ng является хорошим вариантом, когда кто-то должен выполнить сложную логику, чтобы выбрать подходящий класс CSS.
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript :
источник
использовать этот
например, если условие [2 == 2], состояния: {true: '...', false: '...'}
источник
Для Angular 2 используйте это
источник
[ngClass]="['base-class', thread.isActive ? 'base-class--active' : '']"
ng-class
Директива основных AngularJs. В котором вы можете использовать «Синтаксис строки», «Синтаксис массива», «Выраженное выражение», «Тернарный оператор» и многие другие параметры, описанные ниже:ngClass Использование строкового синтаксиса
Это самый простой способ использовать ngClass. Вы можете просто добавить переменную Angular в ng-class, и это будет класс, который будет использоваться для этого элемента.
Демо-пример ngClass с использованием строкового синтаксиса
ngClass Использование синтаксиса массива
Это похоже на метод строкового синтаксиса, за исключением того, что вы можете применять несколько классов.
ngClass Использование оцененного выражения
Более сложный метод использования ngClass (и тот, который вы, вероятно, будете использовать чаще всего) - это оценка выражения. Это работает так: если переменная или выражение вычисляются
true
, вы можете применить определенный класс. Если нет, то класс не будет применен.Пример использования ngClass с использованием оцененного выражения
ngClass Используя Значение
Это похоже на метод оцененного выражения, за исключением того, что вы можете просто сравнить несколько значений с единственной переменной.
ngClass Использование тернарного оператора
Тернарный оператор позволяет нам использовать сокращение для указания двух разных классов: один для выражения true и один для false. Вот основной синтаксис для троичного оператора:
Оценка первого, последнего или определенного номера
Если вы используете
ngRepeat
директиву , и вы хотите применить классы кfirst
,last
или определенный номер в списке, вы можете использовать специальные свойстваngRepeat
. К ним относятся$first
,$last
,$even
,$odd
, и некоторые другие. Вот пример того, как их использовать.источник