首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-chartjs反应数据错误

vue-chartjs反应数据错误
EN

Stack Overflow用户
提问于 2017-11-14 05:56:10
回答 1查看 3.5K关注 0票数 8

我试图在vue-图表中使用反应性数据混合

用于设置初始数据的挂载函数正在工作,我可以使用API响应正确地看到图表:

代码语言:javascript
复制
fetchSessionTrends() {
    axios.get(endpoint)
    .then(({data}) => {
        this.sessions = data.map(session => session.sessions);
        this.sessionLabels = data.map(label => label.date);
        this.loaded = true;
    });
},

数据:

代码语言:javascript
复制
data() {
    return {
       endpoint: 'public/api/sessions',
       sessions: [],
       sessionLabels: [],
       loaded: false,
       daysFilter: 14
    };
},

我用文本字段显示图表,以提供反应性部分--期望它再次调用端点并接收新的响应。

代码语言:javascript
复制
<div class="col-md-2 session-filter">
    <div class="input-group">
    <input type="text" class="form-control" placeholder="days..." v-model="daysFilter">
    <span class="input-group-btn">
      <button class="btn btn-secondary" type="button" @click="refreshSessions">Go</button>
    </span>
    </div>
</div>
<line-chart v-if="loaded" :chart-data="sessions" :chart-labels="sessionLabels"></line-chart>

不过,为了测试反应性部分,现在我只是直接更改数据数组,看看它是如何工作的:

代码语言:javascript
复制
refreshSessions() {          
   this.sessions = [1, 2, 3];
   this.sessionlabels = ["june", "july", "august"];  
},

对,所以这给了我错误

代码语言:javascript
复制
[Vue warn]: Error in callback for watcher "chartData": "TypeError: Cannot read property 'map' of undefined" found in ....

 TypeError: Cannot read property 'map' of undefined

LineChart.js如docs中所述,在这里缩写为空格。

代码语言:javascript
复制
import { Line, mixins } from 'vue-chartjs';
const { reactiveProp } = mixins

extends: Line,
mixins: [reactiveProp],
props: {
 chartData: {
   type: Array,
   required: true
 },
 chartLabels: {
   type: Array,
   required: true
 }
},

mounted() {
  this.renderChart({
    labels: this.chartLabels,
    datasets: [
      {
        label: 'sessions',
        data: this.chartData
      }
    ]
  }, this.options)
}

因此,图表一开始运行良好,但我似乎无法让反应部分发挥作用。

EN

回答 1

Stack Overflow用户

发布于 2017-11-29 12:28:06

这不管用。因为reactiveMixins假定chartData是整个chartjs数据集对象。使用数据集数组、标签等。

但是你要把它分开,这样reactiveMixins就不能工作了。因为您的chartData只是一个数据集的纯数据。

要解决这个问题,你可以做两件事:

  1. 传入整个dataset对象。
  2. 增加自己的观察者。

我想最简单的方法是添加两个观察者来观察chartDatachartLabel,以及在一个更改调用中添加this.$data._chart.update()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47278617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档