首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >computed.oneWay不使用Ember数据

computed.oneWay不使用Ember数据
EN

Stack Overflow用户
提问于 2015-06-14 22:03:53
回答 2查看 231关注 0票数 0

我有一个EmberData快照,在提交给UI进行呈现之前,我想用一些额外的属性来装饰它。此修饰将设置Ember-Data记录的“属性”,而不是实际属性。它看起来是这样的:

代码语言:javascript
复制
let foo = Ember.computed.oneWay(this.get('store').find('activity')); 
foo.map(item => {
    item.set('foobar', 'baz');
    return item;
}

然后,我希望foo将是承诺记录的受益者(它是),并且foobar属性的设置将被本地化到foo属性(其实不然,它似乎被全局范围限定到记录的属性)。

EN

回答 2

Stack Overflow用户

发布于 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。

票数 0
EN

Stack Overflow用户

发布于 2015-06-14 23:14:47

到目前为止,我唯一能做到的方法就是使用Ember的ObjectProxy,如下所示:

代码语言:javascript
复制
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路线图中受欢迎的一部分,所以我不确定这种方法是否是最好的。在关门前我会让它开几天。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30830295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档