在 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 });
    }
}