对于第三方控件的使用,可参考的文档:官网、或查询导入的第三方代码

vue-chartjs图表数据结构为:数据结构官网: http://www.chartjs.org/docs/latest/charts/line.html#cubicInterpolationMode

this.renderChart(data, options)

其中官网中的

Configuration options 都是options中的属性。

Chart.defaults.global  就是和options同级别的。

例子:

options: {tooltips: {intersect: false // default: true. if true, the tooltip mode applies only when the mouse position intersects with an element. If false, the mode will be applied at all times.},animation: {duration: 1  // 动画时长},responsive: true, // 长宽,100%.如果要单设长和宽的话,要将responsive 设为falsemaintainAspectRatio: false // 保持长宽比}

数据结构例子:

chartData: {labels: ['', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', ''],datasets: [{label: '租户:' + (self.tanent==null? "all" :self.tanent) + '   group:' + (self.groupName==null? "all" :self.groupName) + "   event:" + (self.event==null? "all" :self.event),
//            backgroundColor: "rgba(255,255,255,0",
//            borderColor: '#FC2525',
//            pointBackgroundColor: 'FC2525',
//            borderWidth: 1,
//            pointBorderColor: 'FC2525',backgroundColor: null,data: [null, null, null, null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null,null, null, null, null, null, null, null, null, null, null]}]}

注释掉的部分就是它内部的属性。 backgroundColor是所有的背景色,border是线条颜色,point是点颜色

vue-chartjs

这是vue的图表控件:http://vue-chartjs.org/#/home?id=installation

npm install vue-chartjs -s
npm install chart.js -s

代码示例:

<script>import {Line, mixins} from 'vue-chartjs'const { reactiveProp } = mixinsexport default Line.extend({mixins: [reactiveProp],props: ['chartData'],mounted () {this.renderChart(this.chartData, {responsive: true, maintainAspectRatio: false})}})
</script>

这段代码的作用就是自己封装了一个折线图控件,这个可以是js文件,也可以是没有template的vue文件。

为什么用mixins。这个是用来判断图表的chartData;来自哪里?是这几的data:function(){return{}} 还是props:【】中,如果是reactiveProp则来自props。如果是reactiveData则来自自己的data方法中的return中。

那为什么renderChart方法中第一个参数一定要chartData呢?因为,reactiveProp.js 和reactiveData。js中只有对chartData的watch。

vue-chartjs插件

reactiveProp.js的代码

module.exports = {props: {chartData: {required: true}},watch: {'chartData': {handler (newData, oldData) {if (oldData) {let chart = this._chart// Get new and old DataSet Labelslet newDatasetLabels = newData.datasets.map((dataset) => {return dataset.label})let oldDatasetLabels = oldData.datasets.map((dataset) => {return dataset.label})// Stringify 'em for easier compareconst oldLabels = JSON.stringify(oldDatasetLabels)const newLabels = JSON.stringify(newDatasetLabels)// Check if Labels are equal and if dataset length is equalif (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {newData.datasets.forEach((dataset, i) => {// Get new and old dataset keysconst oldDatasetKeys = Object.keys(oldData.datasets[i])const newDatasetKeys = Object.keys(dataset)// Get keys that aren't present in the new dataconst deletionKeys = oldDatasetKeys.filter((key) => {return key !== '_meta' && newDatasetKeys.indexOf(key) === -1})// Remove outdated key-value pairsdeletionKeys.forEach((deletionKey) => {delete chart.data.datasets[i][deletionKey]})// Update attributes individually to avoid re-rendering the entire chartfor (const attribute in dataset) {if (dataset.hasOwnProperty(attribute)) {chart.data.datasets[i][attribute] = dataset[attribute]}}})chart.data.labels = newData.labelschart.update()} else {chart.destroy()this.renderChart(this.chartData, this.options)}} else {this.renderChart(this.chartData, this.options)}}}}
}

reactiveData.js

module.exports = {data () {return {chartData: null}},watch: {'chartData': {handler (newData, oldData) {if (oldData) {let chart = this._chart// Get new and old DataSet Labelslet newDatasetLabels = newData.datasets.map((dataset) => {return dataset.label})let oldDatasetLabels = oldData.datasets.map((dataset) => {return dataset.label})// Stringify 'em for easier compareconst oldLabels = JSON.stringify(oldDatasetLabels)const newLabels = JSON.stringify(newDatasetLabels)// Check if Labels are equal and if dataset length is equalif (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {newData.datasets.forEach((dataset, i) => {// Get new and old dataset keysconst oldDatasetKeys = Object.keys(oldData.datasets[i])const newDatasetKeys = Object.keys(dataset)// Get keys that aren't present in the new dataconst deletionKeys = oldDatasetKeys.filter((key) => {return key !== '_meta' && newDatasetKeys.indexOf(key) === -1})// Remove outdated key-value pairsdeletionKeys.forEach((deletionKey) => {delete chart.data.datasets[i][deletionKey]})// Update attributes individually to avoid re-rendering the entire chartfor (const attribute in dataset) {if (dataset.hasOwnProperty(attribute)) {chart.data.datasets[i][attribute] = dataset[attribute]}}})chart.data.labels = newData.labelschart.update()} else {chart.destroy()this.renderChart(this.chartData, this.options)}} else {this.renderChart(this.chartData, this.options)}}}}
}

Configuration options

禁止chart图表自己的事件:
options: {tooltips: {intersect: false // default: true. if true, the tooltip mode applies only when the mouse position intersects with an element. If false, the mode will be applied at all times.},events:[], // 禁止了它所有的eventsresponsive: false, // true: 长宽,100%; 如果要单设长和宽的话,要将responsive 设为falsemaintainAspectRatio: false // 保持长宽比}

events中的值为: http://www.chartjs.org/docs/latest/general/interactions/events.html

vue-chartjs相关推荐

  1. 2023 年值得推荐的 Vue 库

    目录 一. 状态管理 (1)Pinia (2)Vuex (3)vuex-persist 二.表单 (1)VeeValidate (2)vue-form-making (3)FormKit 三.文档 ( ...

  2. 最值得推荐的热门又实用的 Vue 库

    Tiptap 是一个基于 Vue 的无渲染的富文本编辑器,它基于 Prosemirror,完全可扩展且无渲染.可以轻松地将自定义节点添加为Vue组件.使用无渲染组件(函数式组件),几乎完全控制标记和样 ...

  3. chartjs更新数据 vue_vue.js - 在vue中 怎么更改chart图表的文字大小

    问 题 import {Line} from 'vue-chartjs' export default Line.extend({ data () { return { gradient: null, ...

  4. vue连线 插件_vue 插件集合

    element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI ...

  5. Vue开源项目库汇总

    最近做了一个Vue开源项目库汇总,里面集合了OpenDigg 上的优质的Vue开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. http://ww ...

  6. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)...

    Vue 资源典藏,包括:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例 element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和 ...

  7. 实用VUE 开发插件!!前端必备

    element - 饿了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的组件库 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI ...

  8. Vue——vue-chartjs[Vue 对于 Chart.js 的封装]

    基本概念 vue-chartjs:vue-chartjs is a wrapper for Chart.js in vue. You can easily create reuseable chart ...

  9. Vue应用框架整合与实战--Vue技术生态圈篇

    实用框架以及工具 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 Element-UI ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 ...

  10. Vue.js经典开源项目汇总

    Vue.js经典开源项目汇总   Vue是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计 ...

最新文章

  1. ONVIF测试方法及工具
  2. oracle 11g duplicate active database 建立物理DG
  3. WinForm 程序的界面多语言切换
  4. html+css复习之第2篇 | javascript
  5. springboot幂等性_如何使用 SpringBoot + Redis 优雅的解决接口幂等性问题
  6. Linux下mount FreeBSD分区
  7. 搜索学习(ing...)
  8. php判断除数是不是整数,五种js判断是否为整数类型方式
  9. ASP.NET适合做互联网吗,适合做电子商务平台吗?
  10. ChIPQC——对ChIP-seq的质量评估
  11. 漫射光层析成像的正问题理论模型(一)——蒙特卡洛模型概述
  12. X-Scan-v3.3 漏洞扫描工具使用
  13. 【UNIX网络编程】|【07】SCTP协议探究
  14. Wex5 app 学习笔记(二)
  15. 史上最怪异的几大数据中心事故
  16. 自定义UITableView索引动画,实现饿了么菜单效果
  17. 思岚S2激光雷达6——matlab处理雷达数据
  18. Mac录屏,同时保留声音
  19. 《图解经济学》读后感
  20. 收集的SQL Server性能相关资料

热门文章

  1. 7.23翻倍奖励——滴滴快车单(成交率≥60%,≥5指派单)
  2. android 动画制作小软件GifMaker
  3. 利用有限元数值模拟技术辅助静电场学习
  4. Postman的API授权、Cookies和证书
  5. 神经网络:基于模糊神经网络(Fuzzy Neural Networks,FNN)的数据预测(提供MATLAB代码)
  6. 解决PRprocs5安装问题的方法
  7. Maven创建第一个java项目(官方教程)
  8. 机械中计算机的应用研究,机械设计制造自动化中计算机技术的应用
  9. 手把手教你如何安装java环境_手把手教你安装JAVA环境
  10. 【调剂】中国地震局工程力学研究所2022年硕士研究生调剂信息