发表于: 2017-05-26 13:18:09

1 1046


【JS-TASK-09】怎么将图片上传封装成指令?

大家好,我是IT修真院武汉分院第五期的学员汤特,一枚正直纯洁善良的web程序员

今天给大家分享一下,修真院官网js任务9,深度思考中的知识点——怎么将图片上传封装成指令?

1.背景介绍

在js-task-9内,我们需要实现一个将本地图片上传的功能,并且能够进行预览并且将图片的一些属性展示出来。 为了实现这个功能,我们利用所学的angular知识来做一个功能比较简单的图片上传组件。


2.知识剖析

基本的指令:

1.restrict:String:

E:元素 

A:属性(这个是比较推荐的方式) 

C:css类 

M:注释

2.template/templateUrl:模板,(字符串或函数)指令中的一个重要的一个属性,必须被设置其中一种:一段HTML文本;可以接收两个参数的函数,参数为 tElement 和 tAttrs 

3.replace: 默认为false(模板内容会加载到标签内部),true(模板内容会替换当前标签) 

4.link: link 函数创建可以操作DOM的指令。

图片上传用到的知识点

FileUpload 对象: 

accept 设置或返回指示文件传输的 MIME 类型的列表(逗号分隔)。

id 设置或返回 FileUpload 对象的 id。

name 设置或返回 FileUpload 对象的名称。

type 返回表单元素的类型。对于 FileUpload ,则是 "file" 。

value 返回由用户输入设置的文本后,FileUpload 对象的文件名。

FileReader: 

接口时间onload 成功读取 

readAsDataURL方法:可以将读取到的文件编码成Data URL。Data URL是一项特殊的技术, 可以将资料(例如图片)内嵌在网页之中,不用放到外部文件。使用Data URL的好处是, 您不需要额外再发出一个HTTP 请求到服务器端取得额外的资料;而缺点便是,网页的大小可能会变大。 它适合应用在内嵌小图片,不建议将大图像文件编码成Data URL来使用。您的图像文件不能够超过浏览器限定的大小, 否则无法读取图像文件。

组件功能

功能:

1.点击按钮上传图片 

2.图片能在本地预览 

3.显示图片信息,显示上传进度 

4.点击上传按钮上传到服务器 

5.点击删除按钮,弹框 

6.上传按钮只能按一次 


3.常见问题

如何实现组件


4.解决方案

查看编码实战的demo


5.编码实战


6.扩展思考

还应该添加一些什么功能


7.参考文献

AngularJS 之 Factory vs Service vs Provider

angular上传获取图片的directive指令


8.更多讨论

怎样优化这个组件?


9.鸣谢

感谢大家观看,也感谢刘思言师兄的帮助

BY : 汤特



返回列表 返回列表
评论

    分享到