繁体   English   中英

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

[英]Remove all elements within a ng-repeat in Angular

我正在使用Angular,并且我的页面的一部分使用ng-repeat来显示一些错误跟踪器票证。 作为该网站的一部分,我还希望提供搜索票证的功能。 我可以按照我的意愿让那部分工作,如果我只是追加新的票证,它们会很好显示。

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

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

因此,我尝试将$scope.tickets设置$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来引用您的项目

您测试了$watch吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM