javascript - 如何显示我使用指令上传到 Controller 的图片

标签 javascript angularjs image image-uploading

嗯,老实说,这是我第一次尝试在 JS 中使用图片上传。我正在处理一个 Angular 项目,该项目需要上传用户的图片并将其显示在页面上。 (非常像我们在 Facebook 上上传个人资料图片,唯一的区别是,此页面稍后将以 pdf 格式下载)。

我很失望地看到 ng-model 不适用于文件类型。我尝试了很多方法,最后制定了一个指令,将文件带到我的 Controller (从 here 获得帮助)。

现在我的 $scope.myPic 变量中有文件。我该如何使用这个文件。我该如何显示它。 。我尝试直接绑定(bind)变量{{myPic}},但没有成功 。我尝试使用 (#id).value()。将其存储在变量和绑定(bind)中,但这不起作用。

我尝试过其他一些事情,但无法帮助自己。

有人可以提供将用户从系统上传的图像绑定(bind)到 Angular 的 HTML 页面中的方法吗? 任何好的链接都将不胜感激......

仅供引用:

我的指令 fn:

function uploadPicFn($parse) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            var model = $parse(attrs.picModel);
            var modelSetter = model.assign;

            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                });
            });
        }
    };
};

我的html:

<div class="aw_textarea">
         <label>That's me:{{home.myPic}}</label></br>
         <input class="pd_txtarea" type="file" pic-model="home.myPic"/>
    </div>

最佳答案

例如,可以使用 File Reader 来完成此操作。

您提到您从 here 获得了帮助。因此,我用非常基本的代码示例更新了那篇文章中的 jsfiddle,说明如何使用 FileReader。看看-jsfiddle

        link: function(scope, element, attrs) {
          var model = $parse(attrs.fileModel);
          var modelSetter = model.assign;
          var img = element.parent().children()[2];
          var reader = new FileReader();
          reader.onload = function (e) {
            angular.element(img).attr('src', e.target.result);
          }

          element.bind('change', function(){
            scope.$apply(function(){
                modelSetter(scope, element[0].files[0]);
            });
            reader.readAsDataURL(element[0].files[0]);
        });
    }

关于javascript - 如何显示我使用指令上传到 Controller 的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38518608/

相关文章:

javascript - 使用ajax每X秒更新一次html页面

javascript - 如何在 Safari 的 svg x 属性中使用 calc()?

javascript - 使用现有的 Grunt 项目 - 获取 JSHint 缺少分号和错误

javascript - 如何在 AngularJS 中双重展开变量名

javascript - 如何使用 Angular 表达式值作为 html 元素的属性

html - 可扩展的居中图像链接

Javascript:理解如何根据时间显示图像的问题(new Date()、getHours()、getMinutes())

javascript - Node.js 聊天应用附加样式文本

javascript - Angular 2 将 JSON 对象传递到新窗口

html - 自动扩展背景图像