小编给大家分享一下AngularJS怎么实现图片上传和预览功能的方法分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
js的作用是什么
1,能够嵌入动态文本于HTML页面。2,对浏览器事件做出响应。3,读写HTML元素。4、在数据被提交到服务器之前验证数据。5,检测访客的浏览器信息。6,控制饼干,包括创建和修改等7,基于节点。js技术进行服务器端编程。
<强> html5原生方法强>
先看一下html5原生方法上传和预览图片的实现:
//, & lt; img id=癷mg-preview"比; var imgPreview =, . getelementbyid (“img-preview");//,& lt; input id=癷mg-input",类型=癴ile"比; var imgInput=, . getelementbyid (“img-input"); imgInput.addEventListener (“change",,函数(e) { ,var imgFile =, e.target.files[0];,//,获取上传的图片 ,var reader =, new FileReader (); ,reader.readAsDataURL (imgFile );,//,将图片转成dataUri=,reader.onload 函数(e), { 时间=imgPreview.src 才能;e.target.result;,//更新图片链接 ,} });
我们看的到,需要用到onchange事件来获得上传的文件,当项目使用上angularjs时,很自然的,我们想到了ng-change指令,然而不幸的是,在angularjs中,& lt;输入类型=癴ile"在不支持ng-model和ng-change指令(附录1),这就使得文件上传变得有些复杂了。
<强> angularjs方法强>
这里使用开源的angular-file-upload模块来实现,步骤如下:
1,安装angular-file-upload模块
bower install angular-file-upload ——保存
2,添加到应用依赖
var app =, angular.module (& # 39; my-app& # 39;,, ( & # 39;才能angularFileUpload& # 39; ]);
3, HTML代码
& lt; !——文件上传指令——比; & lt; input 类型=癴ile", nv-file-select=?”,上传=皍ploader",/比; & lt; !——图片预览——比; & lt; img id=癷mg-preview", ng-src=https://www.yisu.com/zixun/" {{iconUrl}} ">
这里,nv-file-select=啊氨硎臼褂胊ngular-file-upload模块的文件选择方式上,传参考官方例子
4,控制器代码
范式(& # 39;有# 39;,,(& # 39;范围# 39;美元,& # 39;FileUploader& # 39;,,函数(范围、美元,fileupload), { ,,,var uploader =, scope.uploader 美元;=,new fileupload ({ ,,,,,url:, & # 39; upload.php& # 39;,//换成自己的上传地址,本地演示不换也行 ,,,}); ,,,uploader.onAfterAddingFile =,函数(fileItem), { ,,,,,var reader =, new FileReader (); ,,,,,reader.addEventListener (“load",, function (e), { ,,,,,,,//文件加载完之后,更新角绑定 ,,,,,,,适用范围。美元(函数(){ ,,,,,,,,,scope.iconUrl 美元;=,e.target.result; ,,,,,,,}); ,,,,,},,假); ,,,,,reader.readAsDataURL (fileItem._file); ,,,}; }));
可以看的到,我们通过onAfterAddingFile回调函数获得所选的图片文件,接下来把图片文件转成datauri,再更新& lt; img>标签的src属性即可。
值得注意的是,我们把“更新& lt; img>标签的src属性”这个任务放到美元了范围。申请美元方法中执行,这是因为在角框架外部(如在浏览器DOM事件中,setTimeout, XHR或者第三方框架中)更新数据,角是不会同步更新绑定的。这点可以参考角美元应用参考