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 相关文章推荐
DOM精简教程
Oct 03 Javascript
Mootools 1.2教程(2) DOM选择器
Sep 14 Javascript
JS获取html对象的几种方式介绍
Dec 05 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
Bootstrap基本样式学习笔记之标签(5)
Dec 07 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
jquery实现动态改变css样式的方法分析
May 27 jQuery
使用纯前端JavaScript实现Excel导入导出方法过程详解
Aug 07 Javascript
如何使用CocosCreator对象池
Apr 14 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
文件系统基本操作类
2006/11/23 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
destoon二次开发入门示例
2014/06/20 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
载入进度条 效果
2006/07/08 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
Python语言的变量认识及操作方法
2018/02/11 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
python迭代器常见用法实例分析
2019/11/22 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
经典团队口号
2014/06/06 职场文书
安全生产宣传标语
2014/06/06 职场文书
2014年教研员工作总结
2014/12/23 职场文书
经理岗位职责
2015/02/02 职场文书
2015年采购部工作总结
2015/04/23 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
学生会自荐信
2019/05/16 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python