Подтвердить что ты не робот

Используя 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-класс в столбцы, но это скучно. У кого-нибудь есть лучшие идеи?

4b9b3361

Ответ 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