javascript - Ember 组件被覆盖而不是重复

标签 javascript ember.js highcharts

我是 Ember 新手,遇到了一些问题。我正在使用在 Stack Overflow 上其他地方找到的修改后的图表组件。我的改变是使用 和 ID 而不是类,这样我就可以拥有多个图表。

组件/high-chart.js

import Ember from 'ember';

export default Ember.Component.extend({
  options: null,
  series: null,
  id: null,

  setId: function() {
    if(this.get('id') === null) {
      this.set('id', 'chart');
    }
  }.on('init'),

  updateSeries: function () {
    this.initializeChart();
  },

  initializeChart: function () {
    var chart = this.get('options');
    chart.series = this.get('series');
    Ember.$('#' + this.get('id')).highcharts(chart);
  },

  didInsertElement: function () {
    this.initializeChart();
    this.addObserver('series', this, this.updateSeries);
    this.addObserver('options', this, this.updateSeries);
  },

  willDestroyElement: function () {
    this.removeObserver('series');
    this.removeObserver('options');
    Ember.$('#' + this.get('id')).highcharts().destroy();
  }
});

模板/组件/high-chart.hbs

<div {{bind-attr id=id}}></div>

这是我尝试显示多个图表的模板。

模板/交易/index.hbs

<h1>Transactions</h1>
<h2>Maximum</h2>
{{high-chart options=options series=maximumSeries id='maximum-chart'}}

<h2>Minimum</h2>
{{high-chart options=options series=minimumSeries id='minimum-chart'}}

<h2>Average</h2>
{{high-chart options=options series=averageSeries id='average-chart'}}

<h2>Median</h2>
{{high-chart options=options series=medianSeries id='median-chart'}}

我已将数据集的创建抽象为 Mixin。但我认为列出来不会有帮助。数据集显示了我想要的数据,但要渲染的最后一个数据集会替换唯一渲染的图表上的数据。

import Ember from 'ember';
import HighChartTransactionsMixin from '../../mixins/high-chart-transactions';

export default Ember.ArrayController.extend(HighChartTransactionsMixin, {
  maximumSeries: function() {
    return this.makeSeriesByTransactions(this, 'maximum');
  }.property('@each', 'sortedTransactionResults.@each.runResultStartTime'),

  minimumSeries: function() {
    return this.makeSeriesByTransactions(this, 'minimum');
  }.property('@each', 'sortedTransactionResults.@each.runResultStartTime'),

  averageSeries: function() {
    return this.makeSeriesByTransactions(this, 'average');
  }.property('@each', 'sortedTransactionResults.@each.runResultStartTime'),

  medianSeries: function() {
    return this.makeSeriesByTransactions(this, 'median');
  }.property('@each', 'sortedTransactionResults.@each.runResultStartTime')
});

此处呈现的页面:

Page rendered

页面来源。我注意到 div id=chart 可能是我的问题的根源,但我不知道这个 id 从哪里来,也不知道如何在我的 Ember 组件中更改它。

Page elemennts

最佳答案

为什么你需要在唯一元素中包含唯一元素?

import Ember from 'ember';

export default Ember.Component.extend({

  setId: function() {
    this.set('elementId', this.get('id'));
  }.on('init'),

  initializeChart: function () {
    var chart = this.get('options');
    chart.series = this.get('series');
    this.$().find('.chart').highcharts(chart);
  }.on('didInsertElement'),
});

模板/组件/high-chart.hbs

<div class="chart></div>

关于javascript - Ember 组件被覆盖而不是重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136310/

相关文章:

javascript - jQuery设置属性值问题

javascript - Chrome : CSS & JS transition not working properly

javascript - 如何从 SP.UI.ModalDialog 获取参数?

javascript - Angular,Jasmine - 监视函数,在 $interval/$timeout 服务内执行

javascript - 用于搜索引擎可抓取应用程序的 EmberJS 技术栈

javascript - 来自服务的 EmberJs : Not able to resolve config/environment. js

javascript - 使用带有 ember 数据的 postgres json 字段

javascript - 使用 React 渲染多个图表

javascript - 将 highcharts 图例项目分成两行

javascript - High Chart 旭日图从内层开始数据