在 Ember.js 中使用多个模型在父路由上调用 Route.modelFor
Calling Route.modelFor on a parent Route with multiple models in Ember.js
我有一个父路由(定义如下)尝试 return 多个模型并基于此讨论:http://discuss.emberjs.com/t/loading-multiple-models-in-a-single-route/5794/15
App.PropertyPricingRoute = Ember.Route.extend({
model: function(params){
return Ember.RSVP.hash({
property: this.store.find('property', { propertyId: params.propertyId }),
rooms: this.store.find('roomType', { propertyId: params.propertyId })
});
}
});
然后在子路由中,我在父路由上调用modelFor()
,并尝试访问两个模型之一。见下文:
App.PropertyPricingUpchargesRoute = Ember.Route.extend({
model: function(){
var propertyId = this.modelFor('propertyPricing').property.get('id');
return this.store.find('upcharge', { propertyId: propertyId });
}
}
问题是 propertyId
报告为 undefined
因为 this.modelFor('propertyPricing').property instanceof App.Property
returns false
,这意味着我不能 get
属性 符合预期。
不确定哪里出了问题,或者是否有更好的做法来解决我正在尝试做的事情。任何帮助将不胜感激!
当您通过查询调用查找时(以对象为参数进行查找),Ember数据不确定会返回多少结果或是否返回任何结果,因此returns一个集合。通常,如果您要查找特定记录,它会是 this.find('property', params.propertyId)
。
不过,使用您当前的代码,假设您一定会得到一个结果,而这只是一个结果,您需要从集合中获取第一条记录才能获得该 ID。
App.PropertyPricingUpchargesRoute = Ember.Route.extend({
model: function(){
var propertyId = this.modelFor('propertyPricing').get('property.firstObject.id');
return this.store.find('upcharge', { propertyId: propertyId });
}
}
我有一个父路由(定义如下)尝试 return 多个模型并基于此讨论:http://discuss.emberjs.com/t/loading-multiple-models-in-a-single-route/5794/15
App.PropertyPricingRoute = Ember.Route.extend({
model: function(params){
return Ember.RSVP.hash({
property: this.store.find('property', { propertyId: params.propertyId }),
rooms: this.store.find('roomType', { propertyId: params.propertyId })
});
}
});
然后在子路由中,我在父路由上调用modelFor()
,并尝试访问两个模型之一。见下文:
App.PropertyPricingUpchargesRoute = Ember.Route.extend({
model: function(){
var propertyId = this.modelFor('propertyPricing').property.get('id');
return this.store.find('upcharge', { propertyId: propertyId });
}
}
问题是 propertyId
报告为 undefined
因为 this.modelFor('propertyPricing').property instanceof App.Property
returns false
,这意味着我不能 get
属性 符合预期。
不确定哪里出了问题,或者是否有更好的做法来解决我正在尝试做的事情。任何帮助将不胜感激!
当您通过查询调用查找时(以对象为参数进行查找),Ember数据不确定会返回多少结果或是否返回任何结果,因此returns一个集合。通常,如果您要查找特定记录,它会是 this.find('property', params.propertyId)
。
不过,使用您当前的代码,假设您一定会得到一个结果,而这只是一个结果,您需要从集合中获取第一条记录才能获得该 ID。
App.PropertyPricingUpchargesRoute = Ember.Route.extend({
model: function(){
var propertyId = this.modelFor('propertyPricing').get('property.firstObject.id');
return this.store.find('upcharge', { propertyId: propertyId });
}
}