我遇到了一个问题,当我尝试从不同的路线使用该模型时,它无法正常工作。
以下是从索引路线获取的模型中的图表绘制的工作示例:http://jsbin.com/kulefogoqera/1/edit
App.IndexRoute = Ember.Route.extend({
model: function() {
return Ember.$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?');
}
});
我修改过它并做了一个名为图表的单独模板,现在我想把它渲染成索引路线,但不能从图表路线获取模型: http://jsbin.com/yotinemubinu/1/edit
App.IndexRoute = Ember.Route.extend({
renderTemplate: function(controller, model) {
console.log(this.modelFor('charts'));
this.render('index');
this.render('charts', {
into: 'index',
outlet: 'charts',
controller: this.controllerFor('charts'),
model: this.modelFor('charts')
});
}
});
App.ChartsRoute = Ember.Route.extend({
model: function() {
return Ember.$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?');
}
});
这是我的误解吗?模板只能从该路径的模型钩子中呈现吗?
答案 0 :(得分:1)
modelFor
无法获取未被击中的路线的模型。它只是输出undefined。您可以使用console.log
对此进行测试。 http://jsbin.com/yotinemubinu/4/edit
this.render('charts', {
into: 'index',
outlet: 'charts',
controller: this.controllerFor('charts'),
model: this.modelFor('charts')
});
此外,您应该延长ObjectController
而不是Controller
。
您应该阅读此部分:http://emberjs.com/guides/routing/
答案 1 :(得分:0)
App.IndexRoute = Ember.Route.extend({
setupController: function() {
this.controllerFor('charts').set('promise', Ember.$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?'))
}
});
这一改变解决了这个问题:
App.ChartsController = Ember.Controller.extend(Ember.PromiseProxyMixin,{ ...
修改后的jsbin http://jsbin.com/yotinemubinu/5/edit