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 数据类型转换总结笔记
Jan 17 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
jquery表单验证插件validation使用方法详解
Jan 20 Javascript
使用javascript做在线算法编程
May 25 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
Aug 13 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
多个vue子路由文件自动化合并的方法
Sep 03 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
Nov 06 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP概述.
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
Wordpress php 分页代码
2009/10/21 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
Cookie 小记
2010/04/01 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
多版本Python共存的配置方法
2017/05/22 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python 中如何写注释
2020/08/28 Python
网络方面基础面试题
2012/11/16 面试题
单方离婚协议书范本2014
2014/10/28 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
七年级英语教学反思
2016/02/15 职场文书