Highcharts-Vue ждет данных, затем обновляет серию - PullRequest
0 голосов
/ 19 марта 2019

Кажется, есть несколько примеров того, как сделать что-то похожее, но все немного отличается от моего случая. Я загружаю некоторые данные о запасах из API (в файле JS), а затем использую их в своем VUE. Я хотел бы обновить серию диаграмм новым массивом, скомпилированным из данных API, но он не работает, и я не получаю никаких ошибок.

Моя Vue выглядит так:

<template>
    <div>
        <highcharts :options="chartOptions" :updateArgs="[true, false]" ref="highcharts"></highcharts>
    </div>
</template>

<script>
    import appService from '../stock_prices'
    import {Chart} from 'highcharts-vue'

    export default {
      name: 'stocks',
      props: {
        msg: String
      },
      data () {
        return {
          chartOptions: {
              mySeries: [],
              info: {},
              updateArgs: [true, true, true],
              series: [{
                  data: [1,2,3,4,5,6,7]
                }],
             }
          }, 
        }
      }, //data

      components: {
        highcharts: Chart 
      },

      methods: {
        updateSeries() {

          for (var i = 0; i < this.info.stock_prices.length; i++) {
          this.mySeries.push([this.info.stock_prices[i].volume]);
          i++
          } 


          data: this.mySeries

        }
      }, //methods

      async created () {
        this.info = await appService.getPosts();
        this.updateSeries()
      }, //async created

} //export default

Я бы хотел дождаться загрузки всех своих данных из моего API (в компоненте appService), а затем использовать их для создания обновленной серии, но я не уверен, что это именно то, что происходит.

Возможно, важное замечание: если я заменю data: this.mySeries в моем методе на что-то вроде data: [10,10,10,10,10,10], это все равно не удастся - ошибок нет, и серия не обновляется.

Спасибо!

1 Ответ

1 голос
/ 19 марта 2019

Обратите внимание, что ваши данные не содержат chartOptions. Также в updateSeries() вы обновляете данные, которые ни на что не ссылаются. Это должно быть что-то вроде примера ниже:

<template>
    <div>
        <highcharts :options="chartOptions" :updateArgs="[true, false]" ref="highcharts"></highcharts>
    </div>
</template>

<script>
    import appService from '../stock_prices'
    import {Chart} from 'highcharts-vue'

    export default {
      name: 'stocks',
      props: {
        msg: String
      },
      data () {
        return {
          mySeries: [],
          info: {},
          updateArgs: [true, true, true],
          chartOptions: {
            series: [{
                data: [1,2,3,4,5,6,7]
            }]
          }
        }
      }, //data

      components: {
        highcharts: Chart 
      },

      methods: {
        updateSeries() {
          for (var i = 0; i < this.info.stock_prices.length; i++) {
            this.mySeries.push([this.info.stock_prices[i].volume]);
          } 

          this.chartOptions.series[0].data: this.mySeries;
        }
      }, //methods

      async created () {
        this.info = await appService.getPosts();
        this.updateSeries()
      }, //async created

} //export default

Проверьте этот пример:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...