在将数组添加到ng-repeat
.
由于Duplicates in a repeater are not allowed
我正在使用的“”错误,track by $index
但是当我尝试显示/隐藏一行时,添加的所有内容都会被切换。我尝试将索引传递给一个ng-click
,甚至直接在ng-click
这是一些示例代码和一个jsFiddle demonstration
HTML 摘录:
<tbody ng-repeat="person in object track by $index" ng-show="person.visible">
<tr>
<td>{{ person.name }}</td>
<td>{{ person.age }}</td>
<td>
<a href ng-click="togglePerson($index)">Hide</a>
</td>
<!-- <td>
<a href ng-click="person.visible = !person.visible">Hide</a>
</td> -->
</tr>
</tbody>
Javascript:
myApp.controller('myController', function ($scope) {
$scope.init = function () {
$scope.object = [{
name: "Billy",
age: 21,
visible: true
}];
$scope.newEntry = {
name: 'Ralph',
age: 16,
visible: true
};
};
$scope.addPerson = function () {
$scope.object.push($scope.newEntry);
};
$scope.togglePerson = function (index) {
console.log(index); // Index is being passed properly
$scope.object[index].visible = !$scope.object[index].visible;
};
});
过去我在中继器中做了很多可见性切换(从不使用 a track by $index
),但我似乎无法确定我哪里出错了。这甚至与跟踪/数组比较有关吗?
编辑
需要明确的是,我的演示不是我如何使用这段代码。我实际上正在切换第二行可见性。我知道我的演示是有缺陷的,因为一旦切换隐藏,就无法切换回来。