这里有一个非常简单的方法来做我认为你想做的事情(当我需要做类似的事情时,我就想出了这个方法):
我们知道每个重复的项目都有自己的作用域。如果我们能将此作用域传递给定义在父作用域中的方法,则我们将能够按照我们想要的方式对其进行操作或添加属性。原来可以通过将this
作为参数传递来实现此目的:
示例
$scope.myCollection = [
{ name: 'John', age: 25 },
{ name: 'Barry', age: 43 },
{ name: 'Kim', age: 26 },
{ name: 'Susan', age: 51 },
{ name: 'Fritz', age: 19 }
];
<ul>
<li ng-repeat="person in myCollection">
<span ng-class="{ bold : isBold }">{{ person.name }} is aged {{ person.age }} </span>
<button class="btn btn-default btn-xs" ng-click="toggleBold(this)">toggle bold</button>
</li>
</ul>
当我们按下“切换粗体”按钮时,我们正在调用需要在控制器的$scope上定义的$ scope.toggleBold()方法。请注意,我们将this作为参数传递,实际上它是当前ng-repeat scope对象。
因此,我们可以这样操作。
$scope.toggleBold = function(repeatScope) {
if (repeatScope.isBold) {
repeatScope.isBold = false;
} else {
repeatScope.isBold = true;
}
};
这里是一个可行的例子:http://plnkr.co/edit/Vg9ipoEP6wxG8M1kpiW3?p=preview
scope.$broadcast
来实现你想要的功能。 - Chandermani