var imgPreview = document.getElementById("img-preview");// " />
当前位置:首页 > 日记 > 正文

AngularJS实现上传和预览功能的方法分析

AngularJS实现上传和预览功能的方法分析

本文实例讲述了AngularJS实现图片上传和预览功能的方法。分享给大家供大家参考,具体如下:

html5原生方法

先看一下html5原生方法上传和预览图片的实现:

// <img id="img-preview">var imgPreview = document.getElementById("img-preview");// <input id="img-input" type="file">var imgInput= document.getElementById("img-input");imgInput.addEventListener("change", function(e){ var imgFile = e.target.files[0]; // 获取上传的图片 var reader = new FileReader(); reader.readAsDataURL(imgFile ); // 将图片转成dataUri reader.onload = function(e) {  imgPreview.src = e.target.result; //更新图片链接 }});

我们看到,需要用到onchange事件来获得上传的文件,当项目使用上angularjs时,很自然的,我们想到了ng-change指令,然而不幸的是,在angularjs中,<input type="file">不支持ng-model和ng-change指令(附录1),这就使得文件上传变得有些复杂了。

angularjs方法

这里使用开源的 angular-file-upload 模块来实现,步骤如下:

1、安装 angular-file-upload 模块

bower install angular-file-upload --save

2、添加到应用依赖

var app = angular.module('my-app', [  'angularFileUpload']);

3、HTML代码

<!--文件上传指令--><input type="file" nv-file-select="" uploader="uploader" /><!--图片预览--><img id="img-preview" ng-src="{{iconUrl}}">

这里,nv-file-select=""表示使用angular-file-upload模块的文件选择方式上传,参考官方例子

4、controller代码

.controller('AppController', ['$scope', 'FileUploader', function($scope, FileUploader) {    var uploader = $scope.uploader = new FileUploader({      url: 'upload.php' //换成自己的上传地址,本地演示不换也行    });    uploader.onAfterAddingFile = function(fileItem) {      var reader = new FileReader();      reader.addEventListener("load", function (e) {        //文件加载完之后,更新angular绑定        $scope.$apply(function(){          $scope.iconUrl = e.target.result;        });      }, false);      reader.readAsDataURL(fileItem._file);    };}]);

可以看到,我们通过onAfterAddingFile回调函数获得所选的图片文件,接下来把图片文件转成datauri,再更新<img>标签的src属性即可。

值得注意的是,我们把“更新<img>标签的src属性”这个任务放到了$scope.$apply方法中执行,这是因为在angular框架外部(如在浏览器DOM事件中, setTimeout, XHR 或者 第三方框架中)更新数据,angular是不会同步更新绑定的。这点可以参考angular $apply reference

更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》

希望本文所述对大家AngularJS程序设计有所帮助。

相关文章

ps背景图层和普通图层怎么互相转换

ps背景图层和普通图层怎么互相转换

背景图层,转换,图层,电脑软件,ps,PS中,怎样把背景图层转换成普通图层呢?普通图层又如何转换成背景图层?下面,小编一 一说下操作方法。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-04在操作界面右下方,这里显…

WPS表格怎么添加下拉列表WPS表格添

WPS表格怎么添加下拉列表WPS表格添

下拉列表,方法,下拉菜单,步骤,表格,  如何在WPS中添加下拉列表呢?通过使用下拉列表,可以更加方便的选择已知项,简各类选择操作。下面小编教你WPS表格怎么添加下拉列表。希望对你有帮助!WPS表格添加下拉列表的步骤首先,在WPS表格中输入要使用…

PHP中error_reporting函数用法详细

PHP中error_reporting函数用法详细

函数用法,详细介绍,电脑软件,PHP,error_reporting,PHP中error_reporting函数用法详细介绍PHP中对错误的处理会用到error_reporting函数,看到最多的是error_reporting(E_ALL ^ E_NOTICE),这个是什么意思呢?下面我们具体分析error_reporting函数…

详细分析单线程JS执行问题

详细分析单线程JS执行问题

执行,单线程,详细,电脑软件,JS,大家在学习javascript的时候很多朋友在执行问题上有疑惑,小编通过本篇文章给大家详细的分析介绍了JS的执行问题,希望能够帮助到你理解。一、介绍随着js不断学习,你可能会慢慢的好奇,用了这么久的js,却不知道这js在…

ps怎么做北极光效果? ps给添加北极

ps怎么做北极光效果? ps给添加北极

教程,北极光,效果,怎么做,电脑软件,ps想要设计激光,该怎么设计呢?下面我们就来看看详细的教程,请看下文详介绍。软件名称:Adobe photoshop 7.01 官方正式简体中文版软件大小:154MB更新时间:2013-04-191、首先打开我们的天空素材,新建一个空白图层,…

怎么在excel2007中添加符号栏excel

怎么在excel2007中添加符号栏excel

教程,方法,控制,数据,删除,  在使用excel2007是,想插入一下键盘上不能输入的符号时,才发现没有符号栏,怎么办?下面小编就告诉你怎么在excel2007中添加符号栏,希望对你有帮助!excel2007中添加符号栏的方法教程office按钮----excel选项----加…

canvas压缩转换成base64格式输出文

canvas压缩转换成base64格式输出文

格式输出,文件流,压缩,转换成,电脑软件,昨天研究了一下canvas压缩图片的方法,上传上来给大家分享一下<!--调用canvas方法--> <canvas id="canvas"></canvas> <!--压缩后的图片路劲--> <img src="" class="preview"> <img src="" cla…

AI基础教程:教你绘制四个清新风格

AI基础教程:教你绘制四个清新风格

图标,绘制,教你,基础教程,夏日,效果图:12 3 4 5 6 7 阅读全文1 23 4 5 6 7 阅读全文1 2 34 5 6 7 阅读全文1 2 3 45 6 7 阅读全文1 2 3 4 56 7 阅读全文1 2 3 4 5 67 阅读全文教程结束,以上就是AI基础教程:教你绘制四个清新风格的夏日…

详解a++和++a的区别

详解a++和++a的区别

详解,区别,电脑软件,以前我也是老搞不懂a++和++a的区别, 后来看了很多资料, 终于总结出来一条规律, 小白专用!看完这个例子就懂了:例1:$a = 8, 求 ++a + a++ - --a + a-- + ++a得多少?旧值: 8 9 10 9…

asp.net core MVC 过滤器之ActionF

asp.net core MVC 过滤器之ActionF

过滤器,电脑软件,net,asp,core,本系类将会讲解asp.net core MVC中的内置过滤器的使用,将分为以下章节asp.net core MVC 过滤器之ExceptionFilter过滤器(一)asp.net core MVC 过滤器之ActionFilter过滤器(二)asp.net core MVC 过滤器之ResultFilt…

fireworks切片功能使用方法图解

fireworks切片功能使用方法图解

切片,使用方法,功能,电脑软件,fireworks,网页三剑客之一的fireworks,小编教大家简单的切片功能,对于新手来说,可以参考本文,希望能对大家有所帮助!方法/步骤1、首先肯定是打开Fireworks,当然如果没有装的话可以先从百度下载然后安装下。2、然后点…

jQuery+ajax实现修改密码验证功能

jQuery+ajax实现修改密码验证功能

修改密码,验证,详解,实例,功能,废话不多说了,直接给大家贴代码了,具体代码如下所示:<script type="text/JavaScript"> //获取url中的参数 $(function(){ var userName = window.location.href; var aa = userName.indexOf("="); …