vue.js - 如何更新 vue2-frappe 图表?
问题描述
在过去的几个小时里,我一直在为此烦恼,无论我在哪里看,我似乎都找不到答案。
我使用vue2-frappe作为我的图表库。我正在使用一个简单的条形图按天显示某些值。一切都很好,直到我的上级决定他们想在这张图表上显示一整年的价值,这意味着我必须给它添加一些分页。
问题是,现在我不知道如何重新渲染图表。我尝试替换将图表绑定到的整个对象,以及操作特定值,但似乎没有任何东西可以使组件重新呈现。
在 frappe.js 的文档中,您可以通过特定的方法修改数据,但这是 Vue 我不能像在普通 .js 中那样只调用 chart.update()。如果我通过 vue 开发工具检查组件,我可以看到它包含修改后的数据,它只是不会重绘自身。
有人知道该怎么做吗?
解决方案
我会尝试强制更新视图组件。
VueJ 的反应性有时会让人感到困惑,你认为它应该对变化做出反应,但事实并非如此。
您可以像这样强制更新视图:
// Globally
import Vue from 'vue';
Vue.forceUpdate();
// Using the component instance
export default {
methods: {
methodThatForcesUpdate() {
// ...
this.$forceUpdate(); // Notice we have to use a $ here
// ...
}
}
}
您可以在此处阅读有关重新渲染的正确方法:https ://michaelnthiessen.com/force-re-render
如 vueJs 的文档中所述,这种方法有一些注意事项:https ://vuejs.org/v2/guide/list.html#Caveats
笔记 #
强制重新渲染不会更新计算值,但您的计算属性不应包含任何外部非反应变量。
注 2 Michael Thiessen 撰写的上述文章还指出,他认为最好的方法是更改密钥,我认为我们都应该意识到这一点。
我希望这能让你走上正确的道路。听起来(信息有限)您可以替换数据但使用相同的密钥。
推荐阅读
- java - Java Stream 在偶数指针处选取值
- arangodb - ArangoDB 非常慢的聚合
- django - Django + postgreSQL:为什么即使我没有提供数据库信息,迁移也能奏效?
- flutter - 删除蜂巢框中的元素时遇到问题
- google-apps-script - 如何从单元格值中提取 URL 而不会超时?
- java - 忽略 Thymeleaf 中 href 中的空参数
- c# - 如果我将迷宫大小设置为 30 on 30,为什么迷宫大小是 27 on 27?
- tiff - 使用 gdal_calc.py 将 nodata 值分配给值高于特定阈值的栅格像元
- pentaho - Pentaho:基于 Excel“白名单”过滤数据集
- android - 除非使用已注册的测试设备,否则非直播 Android 应用不会显示 AdMob 广告或视频