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 相关文章推荐
javascript 模式设计之工厂模式详细说明
May 10 Javascript
复制小说文本时出现的随机乱码的去除方法
Sep 07 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
C++中的string类的用法小结
Aug 07 Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
原生JS实现圆环拖拽效果
Apr 07 Javascript
详解express与koa中间件模式对比
Aug 07 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
Vue实现table上下移动功能示例
Feb 21 Javascript
小程序选项卡以及swiper套用(跨页面)
Jun 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
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python3.6实现学生信息管理系统
2019/02/21 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Python分类测试代码实例汇总
2020/07/23 Python
10个顶级Python实用库推荐
2021/03/04 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
个人能力自我鉴赏
2014/01/25 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
机关作风建设自查报告
2014/10/22 职场文书
区域经理岗位职责
2015/02/02 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
广播体操比赛主持词
2015/06/29 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang