ember数据存储中的ember map对象

时间:2017-12-16 11:52:43

标签: javascript ember.js ember-data ember-cli

我正在尝试在模型钩子中映射对象。我有这个由海市蜃楼提供的对象。

let temp = {"users": [
    {
        "id":1,
        "forename":"Test",
        "surname":"Name"
    },
    {
        "id":2,
        "forename":"Hans",
        "surname":"Solo"
    },
    {
        "id":3,
        "forename":"Peter",
        "surname":"Pan"
    }
]

};

在模型钩子中我想用它:

return this.get('store').findAll('user').then(x => x.map(x => x.id + x.forename + x.surname));

我得到了这个:

  

1 [object Object] [object Object] 2 [object Object] [object   对象] 133000 [对象对象] [对象对象] 3 [对象   对象] [对象]

我在模板中使用它(目前仅用于测试是否有效):

{{#each model as |SingleUser|}}
{{SingleUser}}
{{/each}}

我试图只是映射到ID,这很好用。此外,如果我将直接在模型钩子中声明temp,它工作正常。是否有任何阻碍我的地图的承诺?

我需要这个工作,因为我正在实现一个ember power select multiselection,我想向用户显示id,forename和surename。

1 个答案:

答案 0 :(得分:1)

Ember用Ember Object包装商店中的所有POJO。 与POJO不同,Ember Objects有getter / setter,您应该使用它:

obj.get('property');
obj.set('property', 'value');

您应该将代码更改为:

.then(x => x.map(x => x.get('id') + x.get('forename') + x.get('surname')));

以下是官方指南中关于吸气剂和制定者的几句话: Ember Guides(位于页面底部)。您还可以阅读get / set API(指南文章中的API的URL)。

另外,请查看computed properties。也许,这将适用于您的情况。