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判断两种格式的输入日期的正确性的代码
Mar 25 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
面向对象Javascript核心支持代码分享
May 23 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
酷炫jQuery全屏3D焦点图动画效果
Mar 22 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
详解Vue2中组件间通信的解决全方案
Jul 28 Javascript
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
vue.js实现的全选与全不选功能示例【基于elementui】
Dec 03 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
Jan 21 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
Oct 02 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 超链接 抓取实现代码
2009/06/29 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Python中的Matplotlib模块入门教程
2015/04/15 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
2015年暑期实践报告范文
2015/07/13 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
详解Oracle块修改跟踪功能
2021/11/07 Oracle