删除Angular中ng-repeat中的所有元素

时间:2016-05-30 13:14:30

标签: javascript angularjs

我正在使用Angular,部分网页使用ng-repeat来显示一些错误跟踪器故障单。作为网站的一部分,我还希望提供搜索门票的功能。我可以按照自己的意愿使这部分工作,如果我只是附加新票,他们就会很好。

但是,如果用户搜索,我希望能够删除所有当前可见的故障单div并将其替换为搜索结果。

我最初的想法,因为我将ng-repeat设置为item in tickets track by item.id,只是将$scope.tickets设置为等于新数据。但是,这并没有导致Angular更新DOM。

所以,我尝试将$scope.tickets设置为等于空数组,然后将设置为等于新数据:

$scope.$apply(function() {
    $scope.tickets = [];

    $scope.tickets = data;
});

即使console.log($scope.tickets)显示正确的对象,仍然没有更新DOM。

我知道

的方法
$scope.$apply(function() {
    array.splice(index, 1);
});

删除单个元素,但我不确定如何应用删除所有元素。

我试着尽快将一个Plunkr或JSBin添加到Q中。

使用从数据创建的新元素使Angular替换所有当前元素的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

尝试设置array.length = 0 这会删除所有元素,而不会删除对数组的引用,这实际上似乎是你的问题。

但另一种方法是增加一个数据包。

例如有$scope.data.tickets,那么您可以像往常一样重新设置tickets。重要的是,您必须使用item in data.tickets

来引用您的项目

答案 1 :(得分:0)

您是否测试过$watch

$scope.$watch('tickets', function() {
   //update data HERE
});