删除Angular中的选定列表后,列表项不会更新

时间:2015-01-07 09:47:27

标签: angularjs

我刚刚开始使用Angular,它的实现非常好。现在我正在尝试删除动态创建的列表项。我可以删除项目,但列表项目没有更新。我做谷歌但没有得到任何解决方案。

这是我的HTML内容

<li data-ng-repeat="category in user track by $index">
<div class="pull-left forDrop"><label class="customLabel" id={{category.id}}><a href="" class="viewBooks" ng-mousedown="viewAll(category.id)">{{category.category_name}}</a></label></div>
              <div class="pull-right actions">
                <a href="" class="trash secondry" data-toggle="modal" data-target="#myModalOne" data-ng-click="getCatId($index,category.id)"></a>
                <a href="" class="pvtLock" ng-class="{'lock secondry':category.category_type===1,'openLock secondry':category.category_type===0}"></a>
                <a href="" class="done secondry" data-ng-mousedown="updateCategory()"></a>
                <a href="#" class="penEdit primery"></a>
              </div>

这是controller method

$scope.getCatId = function(index, category_id) {
    cat_id = category_id;
    cat_index = index;
     $scope.user.splice(cat_index,1);
  };

可能是错误的实施,我不知道。

请任何建议对我有帮助。

谢谢。

更新

如果我从底部删除项目,则会更新列表

3 个答案:

答案 0 :(得分:1)

试试这段代码

 var res= $scope.user;
            // var index =cat_index;
              res.splice(cat_index,1);
              //$scope.user.hideColony= true;
              $scope.user= res;

答案 1 :(得分:0)

编辑:等等,你为什么要调用$ scope.user.push($ scope.user.splice)?只需拼接它。将该行更改为:

$scope.user.splice(cat_index,1)

尝试将此代码包装在$ timeout中(尽管您不需要):

$timeout(function() {
    $scope.user.splice(cat_index, 1);
});

并且在注入$ scope时注入$ timeout。

答案 2 :(得分:0)

您需要致电$scope.$apply();才能使更改生效

$scope.getCatId = function(index, category_id) {
    cat_id = category_id;
    cat_index = index;
    $scope.user.push($scope.user.splice(cat_index,1));
    $scope.$apply()
  };

https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$应用