[英]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.