Используя ng-repeat и ng-класс для строк внутри таблицы
Я использую AngularJS, и эффект, который я хочу получить, будет чем-то подобным тому, что это произведет, если он будет работать (чего нет).
Вид
<tr ng-repeat='person in people' ng-class='rowClass(person)'>
<td>.....info about person...</td>
<td>.....info about person...</td>
<td>.....info about person...</td>
</tr>
контроллер
$scope.rowClass = function(person){
...return some value based upon some property of person...
}
Я понимаю, что этот код не будет работать, потому что person
недоступен для ng-class
, поскольку он будет доступен только для объектов внутри каждой строки. Код должен получить представление о том, что я пытаюсь сделать: ie. Я хочу иметь таблицы строк, которые создаются с помощью ng-repeat
, класс которого также основан на условии, которое зависит от доступа к области видимости самой строки, например. person
. Я понимаю, что я мог просто добавлять ng-класс в столбцы, но это скучно. У кого-нибудь есть лучшие идеи?
Ответы
Ответ 1
Это должно работать нормально. Человек должен быть доступен как на элементе tr, так и на его дочерних элементах, поскольку они имеют один и тот же объем.
Кажется, это отлично работает для меня:
<table>
<tr ng-repeat="person in people" ng-class="rowClass(person)">
<td>{{ person.name }}</td>
</tr>
</table>
http://jsfiddle.net/xEyJZ/
Ответ 2
На самом деле вы можете использовать "человек" в контексте, о котором вы говорите. Он существует на повторяющемся элементе, а также на любых элементах внутри него. Причина в том, что любые директивы для определенного элемента имеют один и тот же объект $scope. ng-repeat имеет приоритет 1000, поэтому он уже создал свой $scope и помещает в него "person", поэтому "человек" доступен для ng-класса.
Смотрите этот Plnkr:
http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6