2014-09-29 3 views
2

Im все еще довольно новый для AngularJS. Я пытаюсь изменить цвет элемента таблицы так, чтобы его желтый, если пользователь проголосовал за этот выбор.Условно изменение цвета элемента angularjs?

<div ng-show="poll.userVoted"> 
    <table class="result-table"> 
     <tr ng-repeat="choice in poll.choices"> 
      <td>{{choice.text}}</td> 
      <td> 
      <table ng-if="choice.text == poll.userChoice.text" style="background-color: yellow; width: {{choice.votes.length/poll.totalVotes*100}}%; text-align: right"> 
       <tr> 

         <td>{{choice.votes.length}}</td> 
       </tr> 
      </table> 
      <table ng-if="choice.text != poll.userChoice.text" style="background-color: lightblue; width: {{choice.votes.length/poll.totalVotes*100}}%; text-align: right"> 
       <tr> 

        <td>{{choice.votes.length}}</td> 
       </tr> 
      </table> 
      </td> 
     </tr> 
    </table> 

enter image description here

+0

что ошибка? – hfarazm

+1

Вы можете попробовать что-то вроде этого, если я правильно понимаю ваше название вопроса - http://plnkr.co/edit/jeszGorMQmLiqhtWDt94?p=preview – swapnesh

+0

спасибо, я постараюсь сделать это примерно так. Я просто подумал, что могу сделать это в тегах, так или иначе, не делая для этого никакой функции. – jsky

ответ

7

Это делается с помощью нг-класса.

Использование нг-класса на вашем тд так:

<td ng-class="{yellowstyle: choice.text==poll.userChoice.text}">...</td> 

что поставит класс CSS yellowstyle на элементе, когда ваше условие истинно.

А в вашем примере:

<table class="result-table"> 
    <tr ng-repeat="choice in poll.choices"> 
    <td>{{choice.text}}</td> 
    <td> 
     <table style="width: {{choice.votes.length/poll.totalVotes*100}}%; text-align: right"> 
     <tr> 
      <td ng-class="{yellowstyle: choice.text==poll.userChoice.text, lightbluestyle: choice.text!=poll.userChoice.text}">{{choice.votes.length}}</td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 

с style.css файл, который имеет:

.yellowstyle {background-color: yellow;} 
.lightbluestyle {background-color: lightblue;} 
+0

это дает мне синтаксическую ошибку: 'Ошибка: Синтаксическая ошибка: токен ':' - это неожиданный токен в столбце 12 выражения [yellowstyle: choice.text == poll.userChoice.text, lightbluestyle: choice.text! = poll.userChoice.text], начиная с [: choice.text == poll.userChoice.text, lightbluestyle: choice.text! = poll.userChoice.text] .' – jsky

+1

Извините, забыл {} в ng-классе, исправлен, попробуйте снова –

+0

presto! Спасибо, сэр. – jsky

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