这一切都有效,但它删除了所有的地方'在哪里' foobar'是在。
$scope.remove = function(foobar) {
$http.post('/foobar', foobar)
.success(function(data, status, headers, config) {
$scope.account.places.splice($scope.account.places.indexOf(foobar), 1); // works
// I thought this below will work, but that doesn't work:
// $scope.account.places.users.splice($scope.account.places.users.indexOf(foobar), 1);
});
}
<section ng-repeat="place in account.places">
<section ng-repeat="foobar in place.users">
{{ foobar.name }}
<a ng-click="remove(foobar)">×</a>
</section>
</section>
如何删除特定的&#34; foobar&#34;项目?
答案 0 :(得分:2)
$scope.account.places
似乎是一个数组。在您的非功能版本中,您没有将索引应用于该数组以获取相应的place.users
数组。
解决此问题的一种可能方法是将place
传递给您的remove
方法。然后你的标记看起来像这样:
<a ng-click="remove(place, foobar)">×</a>
你的脚本看起来像这样:
$scope.remove = function(place, foobar) {
$http.post('/foobar', foobar)
.success(function(data, status, headers, config) {
place.users.splice(place.users.indexOf(foobar), 1);
});
}
这假设Array.indexOf可以用于您的目的。
答案 1 :(得分:0)
我刚刚做过这个。我使用这行代码:
<a href="javascript:void(0)" ng-click="array.inside_array.splice($index, 1)[0]">{{items + $index}}</a>
$ index是ng-repeat中的索引引用。