Javascript 文件上载:视图未在非角度事件上更新

Javascript 文件上载:视图未在非角度事件上更新,javascript,angularjs,Javascript,Angularjs,我正在尝试创建上载组件,但当onchange事件触发时,我的视图没有更新。我看到正在记录file.names,但什么也没有发生 我之所以使用指令,是因为我希望能够将我的包放到项目中,然后使用启用文件上传程序 控制器: var controllers = { UploadCtrl: function ($scope) { $scope.images = []; $scope.files = []; $scope.upload = function (element

我正在尝试创建上载组件,但当onchange事件触发时,我的视图没有更新。我看到正在记录file.names,但什么也没有发生

我之所以使用指令,是因为我希望能够将我的包放到项目中,然后使用
启用文件上传程序

控制器:

var controllers = {

  UploadCtrl: function ($scope) {

    $scope.images = [];
    $scope.files = [];

    $scope.upload = function (element) {
      $scope.$apply(function ($scope) {
        $scope.files = element.files;
      });
    };

    $scope.$watch('files', function () {

      for (var i = 0; i < $scope.files.length; i += 1) {

        var current = $scope.files[i];
        var reader = new FileReader();

        reader.onload = (function (file) {
          return function (env) {
            console.log(file.name);
            $scope.images.push({ name: file.name, src: env.target.result });
          }
        }(current));

        reader.readAsDataURL(current);
      }

    }, true);

  }

};
var directives = {

  upload: function ($compile) {

    return {
      restrict: 'E',
      link: function (scope, element, attr) {
        scope.url = element.attr('url');
        element.html($compile(template)(scope));
      }
    };

  }

};
模板变量(这是多行字符串的cs文件原因)

template=”“”
{{image.name}}:
"""

您可能需要使用$apply来更新图像:

$scope.$apply(function () {
    $scope.images.push({ name: file.name, src: env.target.result });
}

您可能需要使用$apply来更新图像:

$scope.$apply(function () {
    $scope.images.push({ name: file.name, src: env.target.result });
}