双重重复拼接以删除项目?

时间:2015-08-17 18:51:46

标签: angularjs

这一切都有效,但它删除了所有的地方'在哪里' 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)">&times;</a>
    </section>
</section>

如何删除特定的&#34; foobar&#34;项目?

2 个答案:

答案 0 :(得分:2)

$scope.account.places似乎是一个数组。在您的非功能版本中,您没有将索引应用于该数组以获取相应的place.users数组。

解决此问题的一种可能方法是将place传递给您的remove方法。然后你的标记看起来像这样:

<a ng-click="remove(place, foobar)">&times;</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中的索引引用。

Check it out!