AngularJS创建一个上传照片的指令实例代码


Posted in Javascript onFebruary 24, 2018

angularJS在近几年发展火热,也无疑是目前市面上来说比较牛逼且成熟的框架,在单页面前端应用当中应该可以说是王者,双向绑定省去了大量的前端代码,控制器在其作用于方面的控制也是相当腻害,今天我们要说的是另外一个比较牛逼的功能,就是angularJS的指令directive,之前没听说过angularJS指令的朋友请自行度娘,随便搜一条文章都比我说的详细,这次用一个我自己写的图片上传的指令来做为案例,详细说明一下实际操作过程中的指令。

之前我们前端的附件上传用的是jqueryFileUpload,每次使用都要在页面把样式画好,然后再控制器中初始化upload组件,上传成功或失败时候还要做相应的处理,这样每次写一个附件上传都要写代码去处理,这样很重复劳动,所以就想利用angularJS的指令把重复劳动的环节给去掉,具体代码如下:

.directive('imageUpload',['Constants',function(Constants){
return {
  restrict: 'E',
  scope: {
    scopeModel:'=',
    title:'@'
  },
  template : '<fieldset>'
      +'<legend>{{title}}<span class="fileinput-button"><span>重新上传</span>'
      +'<input type="file" name="file"></span></legend>'
      + '<span class="profile-picture">'
      + '<img class="img-responsive" alt="{{title}}" ng-src="{{loadImg(scopeModel)}}" style="display: block;"/>'
      + '</fieldset>',
  link : function(scope, element, attrs) {
    $(element).fileupload({
      url: 'file/upload',
      dataType: 'json',
      done: function(e, data) {
        var res = data.result;
        if(res.success){
          scope.scopeModel=res.data.fileKey;
          scope.$apply();
        }
      }
    });
    scope.loadImg=function(key){
      if(undefined==scope.scopeModel || null==scope.scopeModel || scope.scopeModel===''){
        return $.ctx+'/images/noImage.jpg';
      }
      if(scope.scopeModel.indexOf('http://')>-1){
        return scope.scopeModel;
      }
      return $.ctx+'/file/getFile?fileKey='+scope.scopeModel;
    }
  }
};
}]);

指令完成之后在前端页面上只需要写一行代码就可以完成照片的加载(如果是修改页面需要加载出原照片)和上传功能,其中scopeModel是用来双向绑定的,在调用的时候把controller中的model传递进去之后可以实现指令和controller之间的双向绑定,代码中的template为element模板,可以根据具体的样式自己更换(我用的是bootstrap),使用如下:

<image-upload scope-model="imagePath" title="照片上传"></image-upload>

总结

以上所述是小编给大家介绍的AngularJS创建一个上传照片的指令实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript中void(0)的具体含义解释
Feb 27 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
js中for in语句的用法讲解
Apr 24 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
原生js实现回复评论功能
Jan 18 Javascript
vue元素实现动画过渡效果
Jul 01 Javascript
通过jQuery学习js类型判断的技巧
May 27 jQuery
微信小程序wx.request拦截器使用详解
Jul 09 Javascript
javaScript动态添加Li元素的实例
Feb 24 #Javascript
jquery动态添加带有样式的HTML标签元素方法
Feb 24 #jQuery
node.js中fs文件系统目录操作与文件信息操作
Feb 24 #Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 #jQuery
使用puppeteer破解极验的滑动验证码
Feb 24 #Javascript
Vue的elementUI实现自定义主题方法
Feb 23 #Javascript
elementui的默认样式修改方法
Feb 23 #Javascript
You might like
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
jquery文字上下滚动的实现方法
2013/03/22 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python正则表达式之作业计算器
2016/03/18 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python爬虫用mongodb的理由
2020/07/28 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
介绍一下#error预处理
2015/09/25 面试题
高中军训广播稿
2014/01/14 职场文书
愚人节活动策划方案
2014/03/11 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
校运动会广播稿300字
2014/10/07 职场文书
2014年法务工作总结
2014/12/11 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android