Ember.js 烬:在路由中使用控制器数据或如何正确获取数据
这个问题是我上一个问题的后续问题: 在我的应用程序中,我使用Ember.com组件创建了多个图表。所有图表的daterange由Daterangepicker控制,Daterangepicker有自己的控制器等。。现在,通过ajax调用在IndexRoute中获取每个图表的数据,并在查询字符串中传递日期范围 问题是我似乎不知道如何从IndexRoute访问daterange。这是我的密码: IndexRoute.js Index.hbs MyChartComponent.js MyChartController.js 我必须承认,这种设置感觉有点奇怪。所以最终我的问题是:Ember.js 烬:在路由中使用控制器数据或如何正确获取数据,ember.js,Ember.js,这个问题是我上一个问题的后续问题: 在我的应用程序中,我使用Ember.com组件创建了多个图表。所有图表的daterange由Daterangepicker控制,Daterangepicker有自己的控制器等。。现在,通过ajax调用在IndexRoute中获取每个图表的数据,并在查询字符串中传递日期范围 问题是我似乎不知道如何从IndexRoute访问daterange。这是我的密码: IndexRoute.js Index.hbs MyChartComponent.js MyChartCo
基于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'));
}
});