我正在使用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替换所有当前元素的正确方法是什么?
答案 0 :(得分:2)
尝试设置array.length = 0
这会删除所有元素,而不会删除对数组的引用,这实际上似乎是你的问题。
但另一种方法是增加一个数据包。
例如有$scope.data.tickets
,那么您可以像往常一样重新设置tickets
。重要的是,您必须使用item in data.tickets
答案 1 :(得分:0)
您是否测试过$watch
?
$scope.$watch('tickets', function() {
//update data HERE
});