$ scope。$ apply因回调而无法正常工作

时间:2017-02-21 14:26:14

标签: angularjs callback

我在这样的前端使用ng-if:

div class="flex-row flex-space-around image-preview-panel" ng-if="files" /* Some Code */ div

由于调用了这个函数,$ scope在函数调用时没有更新,因此没有按预期工作:

angular.module("mainController", [])

.controller("mainCtrl", function($scope, $state) {
    var vm = this;

    $scope.files = [];

    vm.showThumbnails = function() {
        for(var i=0;i<event.target.files.length;i++) {
            (function(i, file) {
                var reader = new FileReader();
                reader.readAsDataURL(file);
                reader.onload = function(e) {
                    $scope.$apply(function() {
                        $scope.files[$scope.files.length] = file;
                    })
                }
            })(i, event.target.files[i]);
        }
    }
})

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是$scope.files被初始化为一个数组,所以ng-if="files"总是为真(在javascript中,一个空数组是真的)。条件应该是ng-if="files.length > 0"