我有一个EmberData快照,我想用一些额外的属性装饰,然后交给UI进行演示。此装饰将设置Ember-Data记录的“属性”而不是实际属性。它看起来像这样:
let foo = Ember.computed.oneWay(this.get('store').find('activity'));
foo.map(item => {
item.set('foobar', 'baz');
return item;
}
我希望foo
将成为承诺记录的受益者(它是)并且foobar
属性的设置将被本地化为foo属性(它不是,它似乎全局范围到记录的属性)。
答案 0 :(得分:0)
至于我,这是预期的行为。
1)OneWay
表示只有set
方法不绑定foo
方法。它曾用于在对象的属性之间工作,但this.get('store').find('activity')
只是一个承诺。
2)foo
是store.find()
DS.RecordArray
类型的结果(假设承诺已解决)。因此,您正在迭代返回的记录并在其上设置foobar
属性。
实现目标,您可以通过activity
(Ember 2.0方式)装饰component
记录以进行UI演示。
答案 1 :(得分:0)
到目前为止,我能够做到这一点的唯一方法是使用Ember的ObjectProxy
,如下所示:
const FooDecorator = Ember.ObjectProxy.extend({
foobar: 'baz'
});
let foo = Ember.computed(function() {
return this.get('store').find('activity').map(item => {
FooDecorator.create({content: item});
});
}
这有效,但我认为我听说过对象代理不是Ember 2.0路线图的一个受欢迎的部分,所以不确定这种方法是否最好。我会在结束前保持开放几天。