首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJs,Vue-chartjs -变异道具

VueJs,Vue-chartjs -变异道具
EN

Stack Overflow用户
提问于 2017-03-20 16:36:15
回答 2查看 2.7K关注 0票数 5

所以我得到了这个错误

Vue警告:避免直接变异一个支柱,因为每当父组件重新呈现时,值都会被覆盖。相反,使用基于支柱值的数据或计算属性。道具变异:"chartData“(在

现在,这似乎是一个常见的错误,但我不知道如何在这种情况下绕过它。

我使用Vue和Vue-chartjs,我得到了以下内容

bar_chart.vue

代码语言:javascript
复制
<script>
  import { Bar, mixins } from 'vue-chartjs'

  export default Bar.extend({
    name:"bar_chart",
    mixins: [mixins.reactiveProp],
    props: ["width","height","options"],
    mounted () {

      this.renderChart(this.chartData, {responsive: true, maintainAspectRatio: false});
    }
  })
</script>

module_content.vue

代码语言:javascript
复制
<template>
  <div id="module_content">
    <div class="container-fluid">
      <div class="row">
        <div class="col-md-6 bar_chart_test">
          <bar_chart
            :chartData="DataSet"
            :width="400" 
            :height="200">
          </bar_chart>
          <button v-on:click="getBarDate">Hey there!</button>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import bar_chart from 'components/controls/bar_chart.vue'

export default {
  name: 'module_content',
  components: {
    bar_chart
  },
  data: function () {
    return { 
      data_source: {}
    }
  },
  methods: {
    getBarDate: function()
    {
        this.DataSet = ({
          labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
          datasets: [
            {
              label: 'GitHub Commits',
              backgroundColor: '#f87979',
              data: [40, 20, 12, 39, 10, 40, 39, 80, 40, 20, 12, 11]
            }
          ]
        });          
    }
  },
  computed: {
    DataSet: {
     cached: false,
      get: function () {
        return this.data_source
      },
      // setter
      set: function (newValue) {
        this.data_source = newValue;
      }
    }    
  }   
}
</script>

基本上,我希望这个函数getBarDate能够设置ChartData (后面用ajax调用代替),遍历数百个排列和文档,但仍然不理解。

我想明白,你不能直接设置它,这很好,错误是清楚的,但不能看到任何例子,使用vue-图表混合?

我尝试在bar_chart.vue中设置计算表达式或数据变量,在模块内容中设置相同的表达式或数据变量。

我只是不想让它表现出来

有人能帮忙吗谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-08 17:22:40

不要直接变异道具。使用支柱初始化数据值,如

代码语言:javascript
复制
data: function () {
  return { 
    variableDataSet: this.Dataset,
  }
},

并在更改variableDataSet时发出一个事件,

代码语言:javascript
复制
watch: {
  variableDataSet: function(val){
    this.$emit('datasetchanged', val);
  }
}

它将被组件捕捉到,

代码语言:javascript
复制
<bar_chart
  :chartData="DataSet"
  @datasetchanged="value => { DataSet = value }">
</bar_chart>
票数 4
EN

Stack Overflow用户

发布于 2017-04-02 13:38:00

您可以使用vuex存储图表的数据。

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

https://stackoverflow.com/questions/42909104

复制
相关文章

相似问题

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