[英]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.