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 相关文章推荐
用js实现的一个Flash滚动轮换显示图片代码生成器
Mar 14 Javascript
js 链式延迟执行DOME
Jan 04 Javascript
JavaScript中奇葩的假值示例应用
Mar 11 Javascript
javascript实现的左右无缝滚动效果
Sep 19 Javascript
jQuery常见的选择器及用法介绍
Dec 20 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
解决JQuery全选/反选第二次失效的问题
Oct 11 jQuery
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 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的FTP学习(四)
2006/10/09 PHP
PHP中ADODB类详解
2008/03/25 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
pygame学习笔记(5):游戏精灵
2015/04/15 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python三级目录展示的实现方法
2016/09/28 Python
django2 快速安装指南分享
2018/01/05 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Flask配置Cors跨域的实现
2019/07/12 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
服务之星获奖感言
2014/01/21 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS