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 同时提交多个Web表单的方法
Feb 19 Javascript
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
使用Javascript简单实现图片无缝滚动
Dec 05 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
几行js代码实现自适应
Feb 24 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
微信小程序实现多宫格抽奖活动
Apr 15 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
php输出形式实例整理
2020/05/05 PHP
jQuery live
2009/05/15 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
Pandas分组与排序的实现
2019/07/23 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
精神文明建设标语
2014/06/16 职场文书
应用心理学专业求职信
2014/08/04 职场文书
营销学习心得体会
2014/09/12 职场文书
警察群众路线整改措施
2014/09/26 职场文书
2014年个人年终总结
2015/03/09 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
python单向链表实例详解
2022/05/25 Python