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 相关文章推荐
九种js弹出对话框的方法总结
Mar 12 Javascript
jquery子元素过滤选择器使用示例
Jun 24 Javascript
js单词形式的运算符
May 06 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
ExtJs整合Echarts的示例代码
Feb 27 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
Nov 15 Javascript
uni app仿微信顶部导航条功能
Sep 17 Javascript
vue实现多级菜单效果
Oct 19 Javascript
js实现可爱的气泡特效
Sep 05 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获取当前时间的毫秒数的方法
2014/01/26 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
Prototype Class对象学习
2009/07/19 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
javascript操作cookie
2017/01/17 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
python查找指定具有相同内容文件的方法
2015/06/28 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
pytorch实现线性拟合方式
2020/01/15 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
戴森美国官网:Dyson美国
2016/09/11 全球购物
天猫超市:阿里巴巴打造的网上超市
2016/11/02 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
写好自荐信的要点
2013/11/06 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
淘宝店策划方案
2014/06/07 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
努力学习保证书
2015/02/26 职场文书
小学国庆节活动总结
2015/03/23 职场文书