2014-10-09 2 views
9

Я новичок в угловой и пытаюсь сделать следующее:AngularJS ngRepeat: как отличить четные/нечетные элементы?

<tr data-ng-repeat="element in awesomeThings"> 
<div ng-if="$index %2 == 0"> 
    <td class="even"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
<div ng-if="$index %2 != 0"> 
    <td class="odd"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
</tr> 

для приведенной выше коды, как ng-if проходит. Где я ошибаюсь?

+0

индекс $ индекс с угловой – Pascalz

+0

не повезло. Его же результат – batman

+1

https://docs.angularjs.org/api/ng/directive/ngClassOdd –

ответ

16

Просьба $even и $odd Недвижимость. См. documentation.

Как:

<tr data-ng-repeat="element in awesomeThings"> 
<div ng-if="$even"> 
    <td class="even"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
<div ng-if="$odd"> 
    <td class="odd"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
</tr> 
+0

нет удача. Его то же самое :( – batman

+0

Убедитесь, что вы используете Angular.js 1.2.0 или новее. – gligoran

9

Вам не нужно использовать нг-если проверить является ли это четным или нечетным элементом, что функциональность встроена в уже:

<tr ng-repeat="element in awesomeThings"> 
     <span ng-class="$even ? 'odd' : 'even'">{{element}}</span> 
    </tr> 

Другой встроенный В функции ng-class, которая дает вам несколько вариантов условного набора класса css, здесь я использую тройную версию, но есть и другие способы ее использования.

Вот working example

Кроме того, здесь good article объясняя больше о ng-class

+1

Работает для меня, но я действительно не получаю утверждение. Я предполагаю, что «$ even» - это утверждение, но почему первая строка запускается как «нечетная», в то время как выражение «$ even»? (Не сложно объяснить этот вопрос) –

+0

@JorisDecraecker Поскольку утверждение должно быть: «$ even?» even ':' odd ' »(это означает, что даже если положить класс даже в противном случае, он будет нечетным). Конечно, вы можете использовать четный класс, если это нечетно, но я согласен в том, что ответ может быть немного запутанным. –

0

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

tr:nth-child(even) { 
    background: #CCC 
} 

tr:nth-child(odd) { 
    background: #FFF 
} 

Вы можете определить стиль для первого элемента:

tr:first-child { 
    background: #84ace6 
} 
Смежные вопросы