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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
javascript 分号总结及详细介绍
Sep 24 Javascript
微信小程序  audio音频播放详解及实例
Nov 02 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
JS使用tofixed与round处理数据四舍五入的区别
Oct 25 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
JavaScript实现的拼图算法分析
Feb 13 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
ES6中Array.includes()函数的用法
2017/09/20 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python list操作用法总结
2015/11/10 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
翻译专业应届生求职信
2013/11/23 职场文书
师范生求职自荐信
2014/06/14 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
单位实习鉴定评语
2015/01/04 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
基于flask实现五子棋小游戏
2021/05/25 Python
Python天气语音播报小助手
2021/09/25 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang