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 相关文章推荐
jquery $.ajax()取xml数据的小问题解决方法
Nov 20 Javascript
js控制滚动条缓慢滚动到顶部实现代码
Mar 20 Javascript
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
Aug 25 Javascript
jQuery属性选择器用法示例
Sep 09 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
Feb 17 Javascript
vue component组件使用方法详解
Jul 14 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
Aug 02 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
Mar 13 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
webpack 代码分离优化快速指北
May 18 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php 文件上传系统手记
2009/10/26 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
2017/03/23 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
Python中input与raw_input 之间的比较
2017/08/20 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
浅谈python3中input输入的使用
2019/08/02 Python
python打造爬虫代理池过程解析
2019/08/15 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
阿拉伯书店:Jamalon
2019/07/24 全球购物
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
春节超市活动方案
2014/08/14 职场文书
大学迎新生标语
2014/10/06 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
高三复习计划
2015/01/19 职场文书
社区国庆节活动总结
2015/03/23 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
员工工作心得体会
2019/05/07 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js