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写一个鼠标拖动效果实现原理与代码
Dec 24 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
jquery ajax分页插件的简单实现
Jan 27 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
Nov 25 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
小程序登录/注册页面设计的实现代码
May 24 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
nuxt 路由、过渡特效、中间件的实现代码
Nov 06 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制作静态网站的模板框架
2006/10/09 PHP
4.与数据库的连接
2006/10/09 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python的mysqldb安装步骤详解
2017/08/14 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
Python 支持向量机分类器的实现
2020/01/15 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
利用python爬取有道词典的方法
2020/12/08 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
西班牙购买隐形眼镜、眼镜和太阳镜网站:Lentiamo.es
2020/06/11 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
职业生涯规划设计步骤
2014/01/12 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
贷款委托书怎么写
2014/08/02 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
比较几种Redis集群方案
2021/06/21 Redis