angularjs实现柱状图动态加载的示例


Posted in Javascript onDecember 11, 2017

一 准备工作

1.引用文件

下面链接中有一个jquery.js文件,请在index.html中引用。

2.新建文件

新建一个js文件,编写指令。这也是我第一次写指令,指令可扩展性强,还很方便,当项目中重复使用的一些效果时可以通过指令来减少冗余的代码。

二 代码编写

/**
 * Created by xiehan on 2017/12/8.
 * 柱状图动态加载指令
 */
angular.module('studyApp.directives')
 .directive('progressPer', function ($compile,$timeout) {
  return {
   restrict: 'AE',
   scope: {
    progressData: '='
   },
   template: ' <div class="progress-main" ng-repeat="item in progressData">'+
   '<div class="progress-data">'+
   '<span>{{item.name}}</span>'+
   '<div class="skillbar clearfix " data-percent={{item.width}}>'+
    '<div class="skillbar-bar"></div>'+
     '<div class="skill-bar-percent">{{item.sum}}</div>'+
    '</div>'+
   '</div>'+
   '<p class="progress-rate">{{item.percent}}</p>'+
   '</div>',
   replace: true,
   transclude: true,
   link: function (scope, element, attrs) {
    $compile(element.contents())(scope.$new());
    $timeout(function() {
     jQuery('.skillbar').each(function(){
      jQuery(this).find('.skillbar-bar').animate({
       width:jQuery(this).attr('data-percent')
      },1000);
     });
    });
   }
  }
 });
/**
 * Created by xiehan on 2017/11/29.
 * controller文件
 */
angular.module('studyApp.controllers')
 .controller('ProgressCtrl', function ($scope, $rootScope, $ionicHistory,$timeout,$location) {
  $scope.title = '进度条效果';
  $scope.goBack = function () {
   $ionicHistory.goBack();
  };
  var dataInfo=[
   {
    NAME:"测试1",
    NUM:30,
    RATE:30
   },
   {
    NAME:"测试2",
    NUM:25,
    RATE:25
   },
   {
    NAME:"测试3",
    NUM:45,
    RATE:45
   }
  ];

  handleTabData(dataInfo);
  function handleTabData(data){
   var widthData=[];
   for(var i = 0;i<data.length;i++){
    widthData.push({
     width:data[i].RATE+'%',    //进度条百分比
     name:data[i].NAME,      //标题
     sum:data[i].NUM,       //数量
     percent:data[i].RATE+'%'});  //百分比
   }
   $scope.handleDataInfo = widthData;
   //不使用指令加上下面的代码
   // $timeout(function() {
   //  jQuery('.skillbar').each(function(){
   //   jQuery(this).find('.skillbar-bar').animate({
   //    width:jQuery(this).attr('data-percent')
   //   },1000);
   //  });
   // });
  }
 });
<ion-item>不使用指令</ion-item>
  <div class="progress-main" ng-repeat="item in handleDataInfo">
   <div class="progress-data">
    <span>{{item.name}}</span>
    <div class="skillbar clearfix " data-percent={{item.width}}>
     <div class="skillbar-bar"></div>
     <div class="skill-bar-percent">{{item.sum}}</div>
    </div>
   </div>
   <p class="progress-rate">{{item.percent}}</p>
  </div>
  <ion-item>使用指令</ion-item>
  <progress-per progress-data="handleDataInfo"></progress-per>
/***************进度条样式css********/
.skillbar {
 position: relative;
 display: block;
 margin-bottom: 15px;
 width: 100%;
 background: #eee; /**背景颜色**/
 height: 35px;
 border-radius: 3px;
 -moz-border-radius: 3px;
 -webkit-border-radius: 3px;
 -webkit-transition: 0.4s linear;
 -moz-transition: 0.4s linear;
 -ms-transition: 0.4s linear;
 -o-transition: 0.4s linear;
 transition: 0.4s linear;
 -webkit-transition-property: width, background-color;
 -moz-transition-property: width, background-color;
 -ms-transition-property: width, background-color;
 -o-transition-property: width, background-color;
 transition-property: width, background-color;
}

.skillbar-bar {
 height: 35px;
 width: 0px;
 background: #50d2c2;
 border-radius: 3px;
 -moz-border-radius: 3px;
 -webkit-border-radius: 3px;
}

.skill-bar-percent {
 position: absolute;
 right: 10px;
 top: 0;
 font-size: 11px;
 height: 35px;
 line-height: 35px;
 color: #ffffff;
 color: rgba(0, 0, 0, 0.4);
}

.progress-main{
 display: flex;
 display: -webkit-flex;
 align-items: center;
 -webkit-align-items: center;
 justify-content: center;
 -webkit-justify-content: center;
 margin-top: 10px;
}

.progress-data{
 margin-left: 5%;
 width: 100%;
 float: left;
}

.progress-rate{
 float: right;
 width: 20%;
 line-height: 35px;
 margin-left: 5%;
 margin-top: 10px;
}

三 效果图

angularjs实现柱状图动态加载的示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
Javascript基础知识(二)事件
Sep 29 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
JS常见算法详解
Feb 28 Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 #Javascript
js时间戳与日期格式之间转换详解
Dec 11 #Javascript
js时间戳与日期格式之间相互转换
Dec 11 #Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
Dec 11 #Javascript
基于JavaScript 性能优化技巧心得(分享)
Dec 11 #Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 #Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 #Javascript
You might like
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
JS操作图片(增,删,改) 例子
2013/04/17 Javascript
js使用心得分享
2015/01/13 Javascript
浅谈JavaScript的push(),pop(),concat()方法
2016/06/03 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
python实现BackPropagation算法
2017/12/14 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Python类如何定义私有变量
2020/02/03 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
机关门卫制度
2014/02/01 职场文书
初中英语课后反思
2014/04/25 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
刑事辩护词范文
2015/05/21 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
golang使用map实现去除重复数组
2022/04/14 Golang