Ember.js 烬:在路由中使用控制器数据或如何正确获取数据

Ember.js 烬:在路由中使用控制器数据或如何正确获取数据,ember.js,Ember.js,这个问题是我上一个问题的后续问题: 在我的应用程序中,我使用Ember.com组件创建了多个图表。所有图表的daterange由Daterangepicker控制,Daterangepicker有自己的控制器等。。现在,通过ajax调用在IndexRoute中获取每个图表的数据,并在查询字符串中传递日期范围 问题是我似乎不知道如何从IndexRoute访问daterange。这是我的密码: IndexRoute.js Index.hbs MyChartComponent.js MyChartCo

这个问题是我上一个问题的后续问题:

在我的应用程序中,我使用Ember.com组件创建了多个图表。所有图表的daterange由Daterangepicker控制,Daterangepicker有自己的控制器等。。现在,通过ajax调用在IndexRoute中获取每个图表的数据,并在查询字符串中传递日期范围

问题是我似乎不知道如何从IndexRoute访问daterange。这是我的密码:

IndexRoute.js

Index.hbs

MyChartComponent.js

MyChartController.js

我必须承认,这种设置感觉有点奇怪。所以最终我的问题是:
基于DatePickerController中设置的startDate和endDate,为图表获取数据的正确方法是什么?

我也一直在努力解决这个问题

在我的一些应用程序中,我需要URL来控制日期范围,例如特定的月份。在这些情况下,我会创建一个MonthRoute和一个MonthModel——将其视为月度报告。MonthModel具有我想要绘制的实际数据的hasMany属性:

App.Month = DS.Model.extend({
  companies: DS.hasMany('App.Company')
});
日期选择器会让用户输入一条新的路线,比如2013年1月的模型

{
  month: {
    id: 'Jan-2013',
    companies: [
      {name: 'Acme, Inc', revenue: 10425, ...},
      ...
    ]
  }
}
然后,我将在设置控制器挂钩中的CompanyController上设置嵌入式公司数据:

然后,我会在我的CompanyController上执行各种数组操作,并将这些数据提供给我的图表

我有一些,还有一个。我很想听听你的想法

App.MyChartComponent = Ember.Component.extend({
  ...
  dataBinding: null,
  registrationsDataBinding: null,
  dateRangeBinding: null,
  modelDateRangeBinding: null,
  chartContext: null,
  myChartController: null,
  didInsertElement: function() {

    /* Create and set controller */
    if (!this.get('myChartController')) {
      myChartController = new App.MyChartController()
      this.set('myChartController', myChartController);
    }

    this.set('chartContext', $(this.get('element')).find('canvas')[0].getContext("2d"));

  },

  drawChart: function() {

    if(this.get('chartContext')) {

        var ctx = this.get('chartContext');

        var options = {
            bezierCurve : false,
            pointDotRadius : 6,
            pointDotStrokeWidth : 4,
            datasetStrokeWidth : 4,
        }

      var myNewChart = new Chart(ctx).Line(this.get('registrationsDataBinding'), options);

    }

  }.observes('registrationsDataBinding', 'myChartController.dateRange'),

});
App.MyChartController = Ember.ArrayController.extend({
    container: App.__container__,
    needs: ['daterangepicker'],
    dateRange: 'controllers.daterangepicker.selectedRange',
    dateRangeBinding: 'controllers.daterangepicker.selectedRange',
});
App.Month = DS.Model.extend({
  companies: DS.hasMany('App.Company')
});
{
  month: {
    id: 'Jan-2013',
    companies: [
      {name: 'Acme, Inc', revenue: 10425, ...},
      ...
    ]
  }
}
App.MonthRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    controller.set('model', model);
    this.controllerFor('companies').set('model', model.get('companies'));
  }
});