繁体   English   中英

ember:ember数据存储上的计算属性

[英]ember: computed property on ember-data store

我正在为登录用户设置“保存的项目”功能。 我已经进行了建模 (将已保存的项目列表与用户和产品相关联)。 但是我在如何在我的saveditem模型上具有计算属性方面遇到麻烦。 该模型:

// saveditem.js model
export default DS.Model.extend({

    user: belongsTo('user'),
    product: belongsTo('product'),
    dateAdded: attr('string')

});

我目前正在使用产品ID作为该模型的id

我需要该模型上的计算属性,因为只要在网站上显示产品,UI都需要反映该项目是否已经在saveditem余烬数据存储中。

该项目不在列表中(但可以添加)的示例: 在此处输入图片说明

列表中一个项目的示例(但可以删除): 在此处输入图片说明

我在想,我userprofile横跨应用程序管理用户的数据业务,我可以有一个计算的属性,输出来自IDS的数组saveditem模型:

savedItemsList: computed('WHAT.IS.DEPENDENT.KEY?.[]', function() {
    return this.get('store').peekAll('saveditem').map(item => item.id);
}),

然后在模板中,我可以使用可组合帮助器来查看所显示的项目是否在列表中:

{{#if (contains product.id userprofile.savedItemsList)}}
    ...show already-saved button...
{{else}}
    ...show save button...
{{/if}}

问题:此计算属性的从属键是什么? 或者...这种方法很臭,并且有更好的方法可以做到吗?

我努力了:

savedItemsList: computed('store.saveditem.[]', function() {

(当然是在注入商店之后)。 看起来很明显,但是当从saveditem存储中添加或删除记录时,它不会更新。 还尝试了'store.saveditems.[]' ,带有和不带有数组括号的排列以及没有从属键-都没有用。

让我怀疑是否有充分的理由无法实现;)我在这里可能是“与框架打架”。 任何帮助表示赞赏!

您可以引入计算属性,该属性将返回商店中的所有商品,并将该属性用于您的savedItemsList计算属性。

allSavedItemsList: computed(function() {
    return this.get('store').findAll('saveditem');
}),

savedItemsList: computed('allSavedItemsList.[]',function() {
    return this.get('store').peekAll('saveditem').map(item => item.id);
}),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM