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 相关文章推荐
关于文本限制字数的js代码
Apr 02 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
js获取元素在浏览器中的绝对位置
Jul 24 Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
Nov 17 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
js实现自定义进度条效果
Mar 15 Javascript
Node 自动化部署的方法
Oct 17 Javascript
vue 组件高级用法实例详解
Apr 11 Javascript
Vue的Options用法说明
Aug 14 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中简单的对称加密算法实现
2017/01/05 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
纯javascript版日历控件
2016/11/24 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python对数组进行反转的方法
2015/05/20 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python中的闭包函数
2018/02/09 Python
python机器学习之KNN分类算法
2018/08/29 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
学生会招新策划书
2014/02/14 职场文书
对孩子的寄语
2014/04/09 职场文书
三年级学生评语
2014/04/23 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
超级礼物观后感
2015/06/15 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL