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 相关文章推荐
jscript之Read an Excel Spreadsheet
Jun 13 Javascript
var与Javascript变量隐式声明
Sep 17 Javascript
jquery-easyui关闭tab自动切换到前一个tab
Jul 29 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
Jan 11 Javascript
jquery中的$(document).ready()使用小结
Feb 14 Javascript
php利用curl获取远程图片实现方法
Oct 26 Javascript
javascript显示倒计时控制按钮的简单实现
Jun 07 Javascript
老生常谈原生JS执行环境与作用域
Nov 22 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
React diff算法的实现示例
Apr 20 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 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
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php 日期时间处理函数小结
2009/12/18 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
实例解析php的数据类型
2018/10/24 PHP
PDO::errorInfo讲解
2019/01/28 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
Jquery 实现table样式的设定
2015/01/28 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python打造爬虫代理池过程解析
2019/08/15 Python
Python用input输入列表的实例代码
2020/02/07 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
通过Python实现一个简单的html页面
2020/05/16 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
简历的自荐信
2013/12/19 职场文书
义卖募捐活动总结
2015/05/09 职场文书
起诉状范本
2015/05/20 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android