我正在使用 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 用根据数据创建的新元素替换所有当前元素的正确方法是什么?
最佳答案
尝试设置 array.length = 0
这会删除所有元素,同时不会删除对数组的引用,这实际上似乎是您的问题所在。
但另一种方法是拥有一个额外的数据包。
例如有 $scope.data.tickets
然后你可以像往常一样重新分配 tickets
。重要的是,您必须使用 item in data.tickets
关于javascript - 删除 Angular 中 ng-repeat 中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526626/