У меня есть выражение ng-class="myVal > 0? 'myClass': 'none'"
, где myVal
получает значение после некоторого запроса ajax в контроллере.
Проблема в том, что иногда myVal
получает новое значение в контроллере, но указанный класс не обновляется в представлении.
Однако выражение, подобное ng-class="{'myClass': myVal > 0}"
дает правильный результат каждый раз.
Какая разница между двумя? или я должен использовать ngClass
по-разному?
Директива ngClass
принимает выражение как строку, объект и массив. Проверьте документацию о ngClass
контроллер:
// string
$scope.myClassString = 'my-style';
// object
$scope.myClassObject = {
'my-style-a': true, // true expression
'my-style-b': 2 > 1, // true expression
'my-style-c': false // false expression style not applied
};
// array with mixed values
$scope.myClassArray = [
'my-style-d',
{
'my-style-e': true, // true expression
'my-style-f': false // false expression style not applied
}
];
Посмотреть:
<div ng-class="myClassString">
</div>
<div ng-class="myClassObject">
</div>
<div ng-class="myClassArray">
</div>
ИЛИ
<div ng-class="'my-style'"">
</div>
<div ng-class="{'my-style-a': true, 'my-style-b': 2 > 1, 'my-style-c': false}">
</div>
<div ng-class="['my-style-d', {'my-style-e': true, 'my-style-f': false }]">
</div>
myClass
иnone
. Последнее переключаетmyClass
. Эквивалентная версия должна бытьng-class="{'myClass' : myVal > 0, 'none': myVal <= 0}"
. Кстати, оба варианта должны работать демо .