vue集成chart.js的实现方法


Posted in Javascript onAugust 20, 2019

指令

该指令的作用是dom渲染后触发,因为非vue的插件有的是dom必须存在的情况下才可以执行

Vue.directive('loaded-callback', {
 inserted: function (el, binding, vnode) {
  binding.value(el, binding, vnode)
 }
})

安装chartjs

npm install chart.js --save

chartjs 组件

<template>
  <canvas refs="chartcanvas" v-loaded-callback="setCanvas"></canvas>
</template>
<script type="text/javascript">
require('chart.js')
export default{
  name: 'components-base-chartjs',
  props: {
    'data': {},
    'options': {},
    'type': {}
  },
  data:function(){
    return {
      canvas: null,
      chart: null
    }
  },
  watch:{
    canvas: function () { // chart对象生成时触发
      this.initChart()
    },
    data: {
      handler: function () { // 数据变化时触发
        this.updateChart()
      },
      deep: true
    }
  },
  destoryed:function (){
    if(this.cahrt){
      this.cahrt.destroy()
    }
  },
  computed: {
    currentOptions: function (){
      var options = {}
      if(this.options){ // 加载自定义配置参数
        for(var i in this.options){
          options[i] = this.options[i]
        }
      }
      return options
    }
  },
  methods: {
    setCanvas: function(el){ // dom生成时触发
      this.canvas = el
    },
    initChart: function () { // 更新chart结果
      if(this.data && this.currentOptions){ // 保证参数的存在
        this.chart = new Chart(this.canvas.getContext('2d'),{
          type: this.type,
          data: this.data,
          options: this.currentOptions
        })
      }
    },
    updateChart: function () { // 更新chart结果
      this.chart.data = JSON.parse(JSON.stringify(this.data))
      this.chart.update()
    }
  }
}
</script>

用法

<chartjs :options="options" type="pie" :data="data"></chartjs>

options 及数据结构

请跳转

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery checkbox,radio是否选中的判断代码
Mar 20 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 Javascript
Vue.js实现无限加载与分页功能开发
Nov 03 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
手动用webpack搭建第一个ReactApp的示例
Apr 11 Javascript
Vue中$refs的用法详解
Jun 24 Javascript
在layui中layer弹出层点击事件无效的解决方法
Sep 05 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 Javascript
微信小程序实现定位及到指定位置导航的示例代码
Aug 20 #Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 #Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 #Javascript
Vue实现购物车详情页面的方法
Aug 20 #Javascript
详解解决小程序中webview页面多层history返回问题
Aug 20 #Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 #Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 #Javascript
You might like
PHP 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
php调用c接口无错版介绍
2014/03/11 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
php中执行系统命令的方法
2015/03/21 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
漂亮的提示信息(带箭头)
2007/03/21 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
vue的mixins属性详解
2018/03/14 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
Pycharm远程调试openstack的方法
2017/11/21 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
舞蹈毕业生的自我评价
2014/03/05 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL