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 Archive Network 集合
May 12 Javascript
Ext 表单布局实例代码
Apr 30 Javascript
javascript dom 操作详解 js加强
Jul 13 Javascript
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
jquery+ajax实现直接提交表单实例分析
Jun 17 Javascript
JS自定义混合Mixin函数示例
Nov 26 Javascript
vue通过video.js解决m3u8视频播放格式的方法
Jul 30 Javascript
vue实现五子棋游戏
May 28 Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 Javascript
js不常见操作运算符总结
Nov 20 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/03/08 日漫
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
循环 vs 递归浅谈
2013/02/28 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
jupyter notebook实现显示行号
2020/04/13 Python
python3.5的包存放的具体路径
2020/08/16 Python
python两个list[]相加的实现方法
2020/09/23 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
const和static readonly区别
2013/05/20 面试题
《美丽的黄昏》教学反思
2014/02/28 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
爱的教育读书笔记
2015/06/26 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫