Ember findRecord并包含

时间:2017-01-09 21:41:40

标签: javascript node.js ember.js

我有一个组件需要在邮政编码中查询家庭服务。这是为了响应用户输入邮政编码而填充选择下拉列表。

所以我有

export default Ember.Component.extend({
    store: Ember.inject.service(),
    actions: {
        findHome: function(){
            // component declared for promise
            var component = this;
            var postcode = this.get( 'area.postcode');
            var store = this.get('store');

            // EITHER...
            var x = store.findRecord('postcode', postcode, {include: 'homes'})
                .then( function (area) {
                    component.set( 'homes', area.homes);
            });

            // OR...  
            var x = store.findRecord('postcode', postcode, {include: 'homes'})
            component.set( 'homes', x.homes );

        }
    }
});

无论如何,它不起作用,因为两个解决方案都没有正确的homes数组。我该怎么做?

我可以看到Mirage返回数据(邮政编码和包含的房屋)以响应findRecord。

1 个答案:

答案 0 :(得分:1)

在余烬数据中,relationship return Promises。所以在你的情况下你可能会改变你的第一个选项,如下所示,

store.findRecord('postcode', postcode, {include: 'homes'})
    .then( function (area) {                
        area.get('homes').then((result)=>{  component.set( 'homes',result);
        });
    });

请记住,您的第二个选项是错误的,因为findRecord返回Prmise,因此您将Prmoise而不是结果设置为homes