我有一个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属性(其实不然,它似乎被全局范围限定到记录的属性)。
发布于 2015-06-14 22:27:47
对我来说,这是意料之中的行为。
1) OneWay表示只有你没有在foo上绑定set方法。它过去在对象的属性之间工作,但this.get('store').find('activity')只是一个承诺。
2) foo为promise类型的store.find()结果(假设promise被解析)。因此,您要对返回的记录进行迭代,并在其上设置foobar属性。
为了实现你的目标,你可以用component (Ember2.0的方式)来装饰activity记录来呈现UI。
发布于 2015-06-14 23:14:47
到目前为止,我唯一能做到的方法就是使用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});
});
}这是可行的,但我想我听说过对象代理不是Ember2.0路线图中受欢迎的一部分,所以我不确定这种方法是否是最好的。在关门前我会让它开几天。
https://stackoverflow.com/questions/30830295
复制相似问题