2016-05-02 1 views
0

У меня есть следующая переменная области видимости в контроллере моей директивы, и моя область действия оценивает значение переменной как будний день или выходные дни. Если это будний день, мне нужно установить класс css .weekDay в div, и если это выходные, мне нужно установить класс css как .weekEnd. Вышеуказанное выражение Ternary, которое я использовал в моей директиве, не работает для меня? Что здесь не так, и могу ли я оценить выражение моего контроллера в ng-классе? Незлая помощь.AngularJS: Как я могу изменить значение тернарного оператора ng-класса в соответствии с областью контроллера?

$scope.toDay = "Monday"; 
or 
$scope.toDay ="Sunday" 


<div ng-class="{toDay=='Sunday'? 'weekEnd':'weekDay'}"> 

ответ

3

Вы должны использовать оператор сравнения === так что ваш код должен выглядеть следующим образом

<div ng-class="toDay === 'Sunday' ? 'weekEnd' : 'weekDay'"> 
+0

жаль. я пробовал с сегодняшним днем ​​'sunday', но это не сработало. позвольте мне попробовать ваше предложение ===. Спасибо – JsLearner

1

Попробуйте это:

$scope.toDay = "Monday"; 
or 
$scope.toDay ="Sunday" 


<div class="{{toDay==='Sunday'? 'weekEnd':'weekDay'}}"> 
+0

как это будет работать? Вы избавились от 'ng-class' –

+0

В ng-классе невозможно использовать тернарный оператор. «Выражение для eval. Результатом оценки может быть строка, представляющая имена классов с ограниченным пространством, массив или карта имен классов для булевых значений. В случае карты имена свойств, значения которых правка будет добавлена ​​как css-классы к элементу ». –

+1

можно использовать тернарный оператор с 'ng-class'. См. Здесь https://scotch.io/tutorials/the-many-ways-to-use-ngclass –

2
<div ng-class="[today === 'Sunday' ? 'weekend' : 'weekday']"> 

Примечание [] вместо {} & === вместо от =.

+0

Вы не на самом деле. вы можете передать либо строку/строковую переменную, либо карту ('' '{}' ''), либо массив строк и/или карт. Ссылка, которую вы указали, на самом деле объясняет это. – yclee0210

+0

и использование '' '{}' '' в этом случае не работает, потому что '' '{today === 'Sunday'? 'weekend': 'weekday'} '' 'на самом деле не оценивает действительный объект javascript. – yclee0210

0

Вы на самом деле не нужно использовать третичный оператор, вы можете просто реорганизовать немного и использовать ...

<div ng-app ng-init="toDay = 'Monday'"> 
<h1 ng-class="{'weekEnd': toDay == 'Sunday', 'weekDay' : toDay != 'Sunday'}"> 
     Test Text 
    </h1> 
</div> 

Или некоторые сравнения вдоль этих линий

Смежные вопросы