Ember.js 如何在highcharts中刷新数据和/或重新绘制图表?

Ember.js 如何在highcharts中刷新数据和/或重新绘制图表?,ember.js,Ember.js,我正在以以下方式在余烬组件中实现highchart /controllers/mycontroller.js export default Controller.extend({ chartData: [{ name: 'Impact', borderWidth: 2, borderColor: '#FFFFFF', data: [], keys: ['x', 'y', 'v','f', 'i', 'm', 'c',

我正在以以下方式在余烬组件中实现highchart

/controllers/mycontroller.js

  export default Controller.extend({
  chartData:
    [{
      name: 'Impact',
      borderWidth: 2,
      borderColor: '#FFFFFF',
      data: [],
      keys: ['x', 'y', 'v','f', 'i', 'm', 'c', 'g', 'p'],
      dataLabels: {
        enabled: true,
        color: '#000000',
        style:{
          fontSize: 14,
          fontFamily: 'arial',
          textOutline: false
        },
        formatter: function(){
          return this.point.options.feature;
        }
      }
    }],
  chartOptions: computed(function() {
    return {
      chart: {
        renderTo: 'container',
        type: 'mymap',
        events: {
          load: requestData,        -----> function that makes an api call and formats data
          redraw: true
        }
我已经启用了重画选项,但它没有重画,因为加载数据只在组件首次加载时发生(在URL上着陆),我想


因此,我的问题是,当通过函数调用获取数据时,如何每隔60秒自动加载/重画一次数据

图表数据
图表选项
更改时,显示的图表应自动更新。要实现这一点,您有两个不错的选择:

  • 加载数据,进行处理以生成结构正确的
    chartData
    chartOptions
    (如有必要),然后执行
    this.setProperties({chartData,chartOptions})
  • 制作
    图表数据
    图表选项
    正确的计算属性。如果您只定义了
    computed(function()…
    ,而没有依赖键,那么ember将不会重新计算,因为没有什么可以触发重新计算。如果您的数据请求方法更改了控制器/组件(顺便说一句,概念不同!)属性名为
    rawData
    ,例如,您的计算属性应该依赖于以下内容:
    chartData:computed('rawData',function(){…},
要每60秒重新加载一次数据,只需从“@ember/runloop”导入{later};并将数据加载函数再次安排在其自身函数体的末尾:

reload() {
  fetchStuff(...).then(result => this.set('rawData', result));
  later(this, () => this.reload(), 60*1000);
}

非常感谢您的回复@arne.b。是的,我的模板中有
{{high charts content=chartData chartOptions=chartOptions}}
。我现在将尝试您的解决方案,我觉得我比Ember文档更了解您的回复。但是,我不明白我必须在哪里使用
this.setProperties({图表数据,图表选项})
尽管如此?在控制器中,我必须将它们设置为属性?
引用图表实例,对吗?似乎我无法对其使用
setProperties
方法。@KaushikKrishna
引用您在其模板中调用
的控制器或组件的
.js
文件{{high charts…
。这也是我提到的可选选项computed属性需要定义的地方。