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

Angular ng-class if else

Я хотел бы знать, как сделать, чтобы сделать False ng-класс.

page.isSelected(1) ИСТИНА, если страница выбрана, иначе FALSE

<div id="homePage" ng-class="{ center: page.isSelected(1) }">

Поэтому я хочу, чтобы вы:

isSelected TRUE: center

isSelected FALSE: left

Я пробовал:

<div id="homePage" ng-class="{ page.isSelected(1) 'center : 'left' }">

но он не работает.

Я не знаю, что я делаю неправильно. Можете ли вы мне помочь?

4b9b3361

Ответ 1

Просто создайте правило для каждого случая:

<div id="homePage" ng-class="{ 'center': page.isSelected(1) , 'left': !page.isSelected(1)  }">

Или используйте тернарный оператор:

<div id="homePage" ng-class="page.isSelected(1) ? 'center' : 'left'">

Ответ 2

Вы можете использовать обозначение тернарного оператора:

<div id="homePage" ng-class="page.isSelected(1)? 'center' : 'left'">

Ответ 3

Ответы и ryeballar правильны и будут работать.

Если вы хотите слишком уродливо:

  • У Джона есть недостаток в том, что он должен принимать два решения за цикл $digest (он должен решить, нужно ли добавлять/удалять center, и ему нужно решить, нужно ли добавлять/удалять left), когда очевидно, требуется только один.

  • Ryeballar полагается на тернарный оператор, который, вероятно, будет удален в какой-то момент (потому что представление не должно содержать никакой логики). (Мы не можем быть уверены, что он действительно будет удален, и, вероятно, это будет не скоро, но если есть более "безопасное" решение, почему бы и нет?)


Итак, вы можете сделать следующее в качестве альтернативы:

ng-class="{true:'center',false:'left'}[page.isSelected(1)]"