Javascript EmberJS:检索多个模型时从路由检索模型
我有一条路线,它有两个与之关联的模型,如下所示:Javascript EmberJS:检索多个模型时从路由检索模型,javascript,ember.js,Javascript,Ember.js,我有一条路线,它有两个与之关联的模型,如下所示: App.IndexRoute = Ember.Route.extend({ model: function() { return Ember.RSVP.hash({ sites: this.store.find('site'), songs: this.store.find('song') }) }, 现在,稍后,我需要能够检索sites模型中的第一个对象,以便进行下面将显示的转换。我
App.IndexRoute = Ember.Route.extend({
model: function() {
return Ember.RSVP.hash({
sites: this.store.find('site'),
songs: this.store.find('song')
})
},
现在,稍后,我需要能够检索sites
模型中的第一个对象,以便进行下面将显示的转换。我想我可以使用setupController
设置模型,但在处理上述多个模型时,我不确定如何填写此部分:
setupController: function(controller, ???) {
controller.set('model1', ???);
controller.set('model2', ???);
}
最后,我希望能够检索model1中的第一个对象(如上所述,site
的多个实例)
也可能是我没有正确设计我的应用程序<代码>站点在本例中,我构建了一个组件,在几个不同的控制器中显示不同的站点。控制器依赖于此组件,因为它们需要知道选择了哪个站点才能执行自己的操作。因此,在需要访问组件的控制器中,我执行以下操作:
{{site-nav sites=sites}}
其中
站点导航
是我的组件。它需要自己的模型,就像控制器本身一样。首先,您需要稍微修改模型挂钩,以确保保持在正确的范围内:
model:function(){
var self = this;
return Ember.RSVP.hash({
sites: self.store.find('site'),
songs: self.store.find('song')
})
}
要在setupController
中获取不同的模型,只需从第二个参数访问它,如下所示:
setupController:function(controller,models) {
controller.set('sites',models.sites);
controller.set('songs',models.songs);
}
afterModel:function(models){
var site = models.sites.get('firstObject');
this.transitionTo('site',site);
}
afterModel
提供了两个参数,第一个是路线的解析模型,因此您可以这样做:
setupController:function(controller,models) {
controller.set('sites',models.sites);
controller.set('songs',models.songs);
}
afterModel:function(models){
var site = models.sites.get('firstObject');
this.transitionTo('site',site);
}
我相信我在这里将一个null对象传递给transitionon()。尝试了您的解决方案,并在ember console中看到了这一点:加载路由时出错:TypeError:undefined不是一个函数尝试将其记录到控制台并查看结果。是的-尝试了这一点。log(“模型:”+models.get('sites').get('firstObject'));没有任何结果。基本上,
models.get('sites')
在afterModel()中调用时未定义。请尝试console.log(models.sites)
。