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 相关文章推荐
CCPry JS类库 代码
Oct 30 Javascript
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
Bootstrap每天必学之下拉菜单
Nov 25 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
Sep 05 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
详解React 元素渲染
Jul 07 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格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
js函数般调用正则
2008/04/08 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
layui使用label标签的方法
2019/09/14 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python logging类库使用例子
2014/11/22 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
python中如何进行连乘计算
2020/05/28 Python
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
关于人生的感言
2014/01/17 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
班主任寄语2016
2015/12/04 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS