Javascript 角度预览图像-无法设置属性';照片';未定义的

Javascript 角度预览图像-无法设置属性';照片';未定义的,javascript,html,angularjs,Javascript,Html,Angularjs,正在处理预览图像代码,但由于某些问题无法对其进行排序 视图: 控制器: var vm = this; $scope.uploadFile = function() { dietImage = event.target.files[0]; var reader = new FileReader(); reader.onload = function(event) { vm.photo = event.ta

正在处理预览图像代码,但由于某些问题无法对其进行排序

视图:

控制器:

    var vm = this;

    $scope.uploadFile = function() {

        dietImage = event.target.files[0];
        var reader = new FileReader();

        reader.onload = function(event) {
            vm.photo = event.target.result
            $scope.$apply()
        }

        reader.readAsDataURL(event.target.files[0]);
    };

错误消息:“Uncaught TypeError:无法在FileReader.reader.onload上设置undefined的属性'photo'”

我认为您的问题可能是ControllerAs语法。因为我不知道如何将控制器的vm绑定到HTML

尝试以下方法:

<div ng-controller="MyController as vm">
<img ng-src="{[vm.photo]}"/>
<input type="file" on-add-image="uploadFile"/>
</div>


或者最好在路由文件(app.config)中输入您的
controllerAs:'vm'

不,我们已经按原样进行了设置,因此这不是一个问题。它添加在路由控制器中:“myControllerCtrl”,controllerAs:'vm'您是否也输入了指令$apply(function(){element.bind('change',onImgChange);})
    var vm = this;

    $scope.uploadFile = function() {

        dietImage = event.target.files[0];
        var reader = new FileReader();

        reader.onload = function(event) {
            vm.photo = event.target.result
            $scope.$apply()
        }

        reader.readAsDataURL(event.target.files[0]);
    };
<div ng-controller="MyController as vm">
<img ng-src="{[vm.photo]}"/>
<input type="file" on-add-image="uploadFile"/>
</div>