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的blockui插件显示弹出层
Apr 14 Javascript
js选择并转移导航菜单示例代码
Aug 19 Javascript
使用angular写一个hello world
Jan 23 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 Javascript
js+html5实现canvas绘制椭圆形图案的方法
May 21 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
在create-react-app中使用css modules的示例代码
Jul 31 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
Dec 30 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
一个MYSQL操作类
2006/11/16 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
详解vue 项目白屏解决方案
2018/10/31 Javascript
Vue指令指令大全
2019/02/09 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
俞敏洪北大演讲稿
2014/05/22 职场文书
北大自主招生自荐信
2015/03/04 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
nginx+lua单机上万并发的实现
2021/05/31 Servers
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
Python读写yaml文件
2022/03/20 Python