2017-01-13 10 views
0

У меня есть эта динамическая таблица:Изменение фона определенного тд строки динамической таблицы с помощью AngularJS

<table id="thetable"> 


      <tr> 

       <th class="th2">&nbsp;&nbsp;Id&nbsp;&nbsp;</th> 
       <th class="th2">&nbsp;&nbsp;Attivo&nbsp;&nbsp;</th> 
       <th class="th2">&nbsp;&nbsp;Capacità&nbsp;&nbsp;</th> 
       <th class="th2">&nbsp;&nbsp;Zona&nbsp;&nbsp;</th> 
       <th class="th2">&nbsp;&nbsp;Stato&nbsp;&nbsp;</th> 

     </tr> 

      <tr style="cursor:pointer" ng-repeat="staffdispenser in staffdispensers"> 

     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.iddispenser }}</td> 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.stateOn }}</td> 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.capacity.type }}</td> 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.geoArea.city }}</td> 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ (count[$index]*100)/(staffdispenser.dispenser.capacity.depthForSection*staffdispenser.dispenser.capacity.nsections) }}%</td> 

     </tr> 

     </table> 

Я хочу изменить Td фон для конкретной строки, то строки, в которых «подсчитывать [$ индекса] 100)/(staffdispenser.dispenser.capacity.depthForSection staffdispenser.dispenser.capacity.nsections)»составляет менее 0,5

Это мое мнение:

enter image description here

Я хочу что-то вроде этого:

enter image description here

+0

использовать ng-класс с этим условием в нем? – Achshar

+0

Можете ли вы показать мне пример? –

ответ

2

Вы когда-нибудь слышали о ngClass?

Вы можете добавить их к элементам, как этот

<td ng-class="{'yellow-background': (count[$index]100)/(staffdispenser.dispenser.capacity.depthForSectionstaffdispenser.dispenser.capacity.nsections) < 0.5 }"></td> 

Хотя ваш условный не является синтаксически правильным. Что должно быть 100?

count[$index]100)/(staffdispenser.dispenser.capacity.depthForSectionstaffdispenser.dispenser.capacity.nsections) 
+0

[$ index] * 100 .. но ничего не происходит –

+0

Вам нужно убедиться, что все переменные в вашем условном выражении находятся в области видимости и что на самом деле у вас есть класс «yellow-background» в вашем CSS –

1

Альфонсо,

Рассмотрим ищет здесь для примера ngClass:

https://docs.angularjs.org/api/ng/directive/ngClass

Вы можете применить это к элементу динамически применить класс.

Пример:

  <tr style="cursor:pointer" ng-repeat="staffdispenser in staffdispensers" ng-class="{'special-row-color': staffdispenser.isMyCondition == true}"> 
 

 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.iddispenser }}</td> 
 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.stateOn }}</td> 
 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.capacity.type }}</td> 
 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ staffdispenser.dispenser.geoArea.city }}</td> 
 
     <td ng-click="changePath(staffdispenser.dispenser.iddispenser)"> {{ (count[$index]*100)/(staffdispenser.dispenser.capacity.depthForSection*staffdispenser.dispenser.capacity.nsections) }}%</td> 
 

 
     </tr>

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

+0

. Я не могу заставить его работать, можете ли вы сделать мне практический пример и банально? –

1

Во-первых, я думаю, что у вас слишком много логики в ваших выражениях Angular {{ }}, и вы должны разгрузить это контроллеру.

Вы сказали:

Я хочу изменить Td фон для конкретной строки, что строки, где «подсчитывать [$ указательный] 100)/(staffdispenser.dispenser.capacity.depthForSectionstaffdispenser.dispenser.capacity. nsections)» менее 0,5

Так что ваш <td> должен выглядеть следующим образом:

<td ng-class="getClass($index)">{{ myLogicHere }}</td> 

И в контроллере:

$scope.getClass = function(index) { 
    var value = count[index]100)/(staffdispenser.dispenser.capacity.depthForSectionstaffdispenser.dispenser.capacity.nsections; 
    return value < .5 ? 'highlight-class' : ''; 
}; 

Конечно, приспособиться к любой ценности/свойства/логика контроллер имеет.