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 相关文章推荐
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
Feb 17 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
JavaScript实现图片DIV竖向滑动的方法
Apr 25 Javascript
requirejs按需加载angularjs文件实例
Jun 08 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 Javascript
jquery实现下载图片功能
Jul 18 jQuery
nuxt.js写项目时增加错误提示页面操作
Nov 05 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
javascript之Object.assign()的痛点分析
Mar 03 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设计模式 Composite (组合模式)
2011/06/26 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
js停止输出代码
2008/07/20 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
linux下python抓屏实现方法
2015/05/22 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python requests证书问题解决
2019/09/05 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
MySQL面试题
2014/01/12 面试题
软件测试笔试题
2012/10/25 面试题
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
20岁生日感言
2014/01/13 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
文员岗位职责范本
2014/03/08 职场文书
天地会口号
2014/06/17 职场文书
企业党员个人自我评价
2014/09/20 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Go Plugins插件的实现方式
2021/08/07 Golang