찾다

 >  Q&A  >  본문

angular.js - [angular]数组清空后,视图没有马上更新

最近在开发一个数据列表时遇到问题:
该数据列表有一个搜索功能,当输入时,会立即根据输入的关键词,从服务端请求搜索结果。然后视图马上渲染结果。具体代码如下:

app.controller('ListViewController',function($scope){

    $scope.files=[];

    $scope.vm={
        key:''
    };

    $scope.query=function(){
        var param={
            nameFuzzy:$scope.vm.key
        }
        $http.post(url,param)
            .success(function(resp){
                angular.each(resp,function(item){
                    $scope.files.push(item);
                });
            });
    };

    $scope.$watch('vm.key',function(newVal,oldVal){
        if(newVal!==oldVal){
            //关键词发生变化时,清空列表
            $scope.files.length=0;
            //然后请求数据
            $scope.query();
        }
    });

    $scope.query();
});

现在的问题在于:当清空数组时,视图上的列表没有消失,待搜索结果返回后,并渲染成功,前一个列表才消失,也就是说,两组数据会同时存在几百毫秒的样子,前一组数据才消失,调用$scope.$apply()并没有什么用,会抛出错误:degist in progress,说明已经在更新视图中,但是不知道为什么会这么慢。
ps:还有其它数据列表,则没有这个问题

PHP中文网PHP中文网2745일 전625

모든 응답(3)나는 대답할 것이다

  • 滿天的星座

    滿天的星座2017-05-15 16:54:44

    전화해 보세요 scope.$digest();이게 작동하나요?

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-05-15 16:54:44

    app.controller('ListViewController',function($scope){

    으아악

    });

    템플릿의 키워드 입력 상자에 ng-change="query()"를 사용하세요. 사용법을 모르면서 시계를 남용하지 마세요

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-15 16:54:44


    `$timeout(function(){
    $scope.files = [];
    })`

    회신하다
    0
  • 취소회신하다