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 相关文章推荐
JQuery Ajax 跨域访问的解决方案
Mar 12 Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 Javascript
jquery1.9 下检测浏览器类型和版本的方法
Dec 26 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
Feb 04 Javascript
node.js中的fs.write方法使用说明
Dec 15 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
关于js对textarea换行符的处理方法浅析
Aug 03 Javascript
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 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
PHPlet在Windows下的安装
2006/10/09 PHP
杏林同学录(四)
2006/10/09 PHP
PHP语法速查表
2007/01/02 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python入门篇之面向对象
2014/10/20 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
Python3实现的判断环形链表算法示例
2019/03/07 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
金属材料工程个人求职的自我评价
2013/12/04 职场文书
初中学生操行评语
2014/12/26 职场文书
个人先进事迹材料
2014/12/29 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
安全守法证明
2015/06/23 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis