简介

vue-chartjs 让你在 Vue 中能更好的使用 Chart.js . 非常适合想要尽快启动和运行简单图表的人。它抽象了一些简单的逻辑, 但是也暴露了 Chart.js 对象, 提供了极大的灵活性。github start 3k+, MIT协议。

DEMO 列表

条形图

折线图

圆图

饼图

雷达图

极地图

气泡图

线图

快速上手

  • 安装

你可以在 npm 下安装 vue-chartjs. 当然, 你也需要在项目中安装 chart.js 依赖. 因为 Chart.js是一个 peerDependency. 这种方式你可以完全控制 Chart.js 的版本

yarn add vue-chartjs chart.js or npm install vue-chartjs chart.js --save
  • 安装vue 1.x版本

如果你使用的是 vue 1.x 版本, 请使用 legacy 标签. 然而, Vue 1 所支持的版本不再维护了.

yarn add vue-chartjs@legacyornpm install vue-chartjs@legacy
  • 浏览器

你也可以直接在浏览器中使用 vue-chartjs. 先添加 Chart.js 脚本, 再添加 vue-chartjs 脚本.

  • 创建你自己的第一个图表

你需要引入一个基本图表然后扩展它. 这为处理不同数据时提供了更大的灵活性. 你可以封装你的组件以及使用props来处理数据, 或者你可以直接在组件里输入他们. 当然, 如果那样做, 你的组件就无法复用了.

你可以引入整个项目或者每个模块单独引用. 之后你需要使用extends:或者 mixins:[]. 然后在 mounted() 中调用 this.renderChart(). 这将创建你的图表实例.

import { Bar } from 'vue-chartjs'export default { extends: Bar, mounted () { this.renderChart(data, options) }}

你可以使用 extends: Bar 或者 mixins: [Bar]

this.renderChart() 方法由 Bar 组件提供, 接收两个对象参数.第一个是你的图表数据, 第二个是配置对象.

在这个文档中查看你需要提供的对象结构 Chart.js docs .

  • Vue 单文件组件

文档中很多例子都是基于javascript文件 而不是 .vue 文件. 这是因为你大多数只需要

不要使用Template标签

不要在你的 .vue 文件中引入 标签. Vue 无法 合并模板.如果你添加了一个空的 标签, Vue 将会从你的主键里获取模板, 而不会从你 extend 中获取, 这将导致页面为空并报错.

  • 更新 Charts

如果你修改了数据集, Chart.js 是不会提供实时更新的. 当然, vue-chartjs 提供了两个 mixins 来实现.

  • reactiveProp
  • reactiveData

这两个mixins其实实现的是相同的功能. 大多数时间你将会使用reactiveProp. 它扩展了图表组件的逻辑, 并自动创建名为 chartData 的props参数, 并为这个参数添加vue watch. 当数据改变, 如果数据在数据集中改变, 它将调用update(); 如果添加了新的数据集, 它将调用renderChart().

reactiveData 创建一个本地的chartData变量, 不是props参数! 以及创建一个对这个变量的 watcher. 如果你需要单一目的的图表, 以及在图表组件中进行API调用的时候, 这将非常有用.

  • 更新 Charts => 例子

LineChart.js

import { Line, mixins } from 'vue-chartjs'const { reactiveProp } = mixinsexport default { extends: Line, mixins: [reactiveProp], props: ['options'], mounted () { // this.chartData 在 mixin 创建. // 如果你需要替换 options , 请创建本地的 options 对象 this.renderChart(this.chartData, this.options) }}

RandomChart.vue

Randomize

限制:Caveats Change-Detection-Caveats vm.$watch

  • 事件

如果你的数据改变, 响应式的 mixins 将会触发事件. 你能监听他们通过在图表组件上使用 v:on. 下列是可用的事件:

  • chart:render - 如果 mixin 执行完全重绘
  • chart:destroy - 如果 mixin 删除图表对象实例
  • chart:update - 如果 mixin 执行更新而不是重绘
  • labels:update - 如果设置了新的labels
  • xlabels:update 如果设置了新的xLabels
  • ylabels:update - 如果设置了新的yLabels
  • 故障排查

响应式系统, 它当前状态是不健全的. 你将会遇到一些问题, 因为有很多用例和方式来传递你的数据.

  • 故障排查 => Options

options 对象不是响应式的. 所以如果你动态改变图表的配置, 他们将无法被 mixin 识别.

如果你正在使用 mixin , 你需要使用options来传递你的配置. 这是非常重要的, 因为 mixin 将调用 chart.js 的 update() 方法 或者 销毁并渲染一个新的图表. 如果 mixin 渲染一个新的图表, 它将调用this.renderChart(this.chartData, this.options).

但是如果你在mounted()传递你的配置, 它们将直接被遗弃.

错误的方式

import { Line, mixins } from 'vue-chartjs'export default { components: { Line } mixins: [mixins.reactiveProp], mounted () { this.renderChart(this.chartData, {responsive: true}) }}

正确的方式

import { Line, mixins } from 'vue-chartjs'export default { components: { Line } mixins: [mixins.reactiveProp], mounted () { this.renderChart(this.chartData, this.options) }}
  • 故障排查 => 自己的监视器

如果你对你的数据进行大量更改(而不是推新的数据), 那么最好的方式是创建自己的 watcher. 你可以自己调用 this.$data._chart.update() 或者 this.renderChart() 来实现, 当然这些完全取决于你自己.

一个简单的监视器将会是这样:

watch: { chartData () { this.$data._chart.update() }}

vue引入three.js3维地图_vue-chartjs使用 Chart.js 和 Vue.js 搭建简单和漂亮的图表相关推荐

  1. vue 引入echarts画中国地图 Map china not exists

    现象:在vue里用echarts画地图时报错:Map china not exists. 只出现了南海诸岛部分 原因:没引入地图数据 解决: import 'echarts/map/js/china. ...

  2. Vue项目使用天地图的方法(Vue引入天地图,创建地图实例)

    最近项目需要用到天地图,要引入到Vue项目中,鉴于官网没有相关的说明文档,在这里我记录一下我所使用的引入方法,可能不是很好,希望有更好的方法大佬能教一下我. 第一步,在Vue项目文件夹public下的 ...

  3. cad图形如何导入到奥维地图_【详细教程】奥维地图上查看项目的线路图或平面图...

    我们新到一个工地项目,一般都需要知道道路的走向,或者项目的所在位置,这个时候我们一般使用测量仪器将相关点位测量出来以进行查看.但是这种方法耗时较长.效率较低. 那如何提高效率呢? 这里我们就使用到了奥 ...

  4. vue引入luckysheet插入图表时报错Uncaught TypeError: h.createChart is not a function

    Luckysheet(excel)引入chartMix的问题 记录问题:离线引入Luckysheet,插入图表时报错Uncaught TypeError: h.createChart is not a ...

  5. vue 引入json地图_vue中引入地图的js文件,显示echarts is not loaded

    <script type="text/javascript"> var vue = new Vue({ el:'#app', data:{ function () { ...

  6. maptalks+three.js+vue webpack项目实现二维地图上贴三维模型

    我们不是走在坑里就是走在前往坑的路上_(:зゝ∠)_ 最终效果如图:(地图上添加一个"三维地图"的toolbar按钮,点击后在二维地图上贴上建好的三维模型点击显示弹框) 以下都在已 ...

  7. 基于Vue框架开发的页面加载二维地图以及交互

    一.在Vue项目中引入二维地图 1.切换到公司的仓库下载地图插件 npm config set registry http://nexus.toops.club/repository/npm-zui/ ...

  8. html引入百度地图报错,vue引入百度地图BMapGL,或者其他个性化地图

    3.jpg vue的百度地图早就有vue-baidu-map这里就不赘述了, 自己去直接对着API写就好了,基本上已经满足绝大多数需求了还简单方便. vue-baidu-map 传送门 https:/ ...

  9. vue 引入json地图_使用vue引入maptalks地图及聚合效果的实现

    1.安装maptalks.js npm install maptalks --save 2.安装聚合mapkercluster npm install maptalks.markercluster 3 ...

最新文章

  1. django restfull centos6.5 x86_64 python2.7
  2. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前进实验调试
  3. Codeforces Gym 100286I iSharp 模拟
  4. Spring-全局异常拦截
  5. K个排序链表的合并(Hard)
  6. stack Error: EACCES: permission denied
  7. kafka单条消息太大引起的线上故障
  8. ciscotftp服务器(ciscotftp服务器下载)
  9. mysql ibd恢复数据_mysql通过ibd恢复数据
  10. C#服务端的微信小游戏——多人在线角色扮演(十五)
  11. Unity期末AI足球游戏小项目(免费开源)
  12. QT离线安装包下载地址
  13. 让更多人用到自己的代码,让信仰在风中飘扬
  14. Datawhale 1月leetcode
  15. 【Linux】ifconfig不显示ip地址
  16. 【科普】72名图灵奖获得者的成就
  17. 余额宝定期存款利率区别
  18. 报错Error from chokidar (C:\): Error: EBUSY: resource busy or locked, lstat ‘C:\hiberfil.sys‘
  19. 【校招】面试_字节跳动_客户端开发工程师_一面
  20. 国标Gb28181里Contact和Route的使用

热门文章

  1. Winform中的开关按钮【ToggleButton】
  2. 钢板表面不同种类的缺陷图
  3. Ansible 剧本变量 -01
  4. php mysql问答系统_PHP+MYSQL问答系统V3.7
  5. vue-cli Failed to download repo vuejs-templates/webapck: Response code 404 (Not Found)
  6. Java常见的一些经典面试题(附答案解析)
  7. 想去一线大厂先过这一关, Java-SSM框架相关面试题整理!!!
  8. 清华教授花一个月把Python所有基本用法归纳好了!末有惊喜
  9. 【答学员问】完全零基础培训IT,学习能跟的上吗?
  10. 如何配置阿里云服务器防火墙?