Angular:删除元素后,ng-repeat不会在视图上更新

时间:2015-08-04 07:39:28

标签: javascript angularjs

我正在使用ng-repeat来显示view中的项目列表。 在我的controller中,数组正在更新但视图不会更新。  我不知道我在哪里做错了。

有人可以帮我解决吗?

这是我的观点部分:

  <ul>
    <li data-ng-repeat="item in closedBoards track by $index">
      <a href="#" data-ng-if="(item.closeBoard)"><span class="board-span" tooltip-html-unsafe="<strong>Board Name: {{item.name}}<br />Created by: {{item.createdBy.name}}<br />Created At: {{item.createdAt}}</strong> " tooltip-placement="top"><strong>{{item.name}}</strong><span><img class="reopen-board" src="../images/reopen.png" open-board data-ng-click="show(item._id)"></span></span></a>
    </li>

  </ul>

这是我的控制器代码

$scope.reOpenBoard = function() {
            BoardFactory.openBoard(boardId).then(function(data) {
                    $scope.closedBoards.some(function(closed,index){
                        if(closed._id==boardId){
                        $scope.closedBoards.splice(index,1);

                            return true;
                    }else{
                        return false;
                    }
                    });
            }, function(err) {
                console.log(err); 
            })
        }

谢谢。

1 个答案:

答案 0 :(得分:0)

如果$scope.closedBoards是一个jQuery插件容器而.some是一个插件函数,那么你应该在你的AngularCode周围使用$ scope。$ apply wrapper:

$scope.reOpenBoard = function() {
            BoardFactory.openBoard(boardId).then(function(data) {
                    $scope.closedBoards.some(function(closed,index){                                
                            if(closed._id==boardId){
                                $scope.$apply(function(){
                                    $scope.closedBoards.splice(index,1);
                                });
                                return true;
                            }else{
                                return false;
                            }

                    });
            }, function(err) {
                console.log(err); 
            })
        }

但我认为你的代码中有错误。 $ scope.closedBoards - 必须是一个数据数组,它不能包含.some等方法