Это вопрос о том, как выделить выделенную строку в ngRepeat?
Здесь строка подсвечивается с использованием функции, определенной в контроллере. Мне хотелось сделать наоборот, где я хочу использовать только код в HTML. Ниже мой плункер, который я пробовал. Plunker Pls поделится своими мыслями по этому вопросу:
<tr ng-repeat="item in items"
ng-init="selectedRow = null"
ng-class="{'selected':selectedRow == $index}"
ng-click="selectedRow=$index" ></tr>
Взгляните на эту демонстрацию
<tr ng-repeat="item in items"
ng-init="selectedRow = null"
ng-class="{'selected':$parent.selectedRow == $index}"
ng-click="$parent.selectedRow=$index" >
<td>{{item.name}}</td>
<td>{{item.value}}</td>
<td><button class="btn btn-primary" ng-click="edit(item)">Click</button></td>
</tr>
function ListCtrl($scope, $dialog) {
$scope.items = [
{name: 'foo', value: 'foo value',car:'chevy',model:'vette',year:'2013'},
{name: 'bar', value: 'bar value'},
{name: 'baz', value: 'baz value'}
];
$scope.selected = -1;
}
Если вы хотите обработать вышеописанное условие с помощью CSS, используйте флажок angularJS ng-class-even и ng-class-odd.
Таким образом, при выполнении обоих будет отображаться, но любой из них только придет в действие.
Ваша проблема: ng-repeat
создаст свою собственную дочернюю область для каждой итерации, которая имеет свою собственную selectedRow
переменную Row. Поэтому, когда вы нажимаете кнопку, она активирует класс, но не удаляется, так как следующая строка задает другой экземпляр selectedRow
переменной Row.
Вы можете либо ссылаться на selectedRow
на $parent.selectedRow
либо на реструктуризацию своей $scope
чтобы открыть свойство, к которому вы привязываетесь. последний обходит проблему, о которой сообщают некоторые люди, используя ng-model
непосредственно из области.
$scope.model = {
items: [],
selectedRow: 0
}
Пожалуйста, возьмите идею из приведенного ниже примера:
Используйте ng-class-odd и ng-class-even
<ol ng-init = "names = ['John', 'Mary', 'Cate', 'Suz']">
<li ng-repeat = "name in names">
<span ng-class-odd = "'odd'" ng-class-even = "'even'">
{{имя}}
</SPAN>
</Li>
</Ол>