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 tab插件精简版分享
Sep 10 Javascript
Jquery Post处理后不进入回调的原因及解决方法
Jul 15 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
详解JavaScript对象类型
Jun 16 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
Vue之Vue.set动态新增对象属性方法
Feb 23 Javascript
JS实现关键词高亮显示正则匹配
Jun 22 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
el-form 多层级表单的实现示例
Sep 10 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生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
jquery json 实例代码
2010/12/02 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
js 根据对象数组中的属性进行排序实现代码
2019/09/12 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
人事专员的岗位职责
2014/03/01 职场文书
病媒生物防治方案
2014/05/13 职场文书
法学自荐信
2014/06/20 职场文书
高考学习决心书
2015/02/04 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS