我正在处理将要注入的购物车服务,我正在使用余烬数据来存储购物车数据(因为我需要将购物车保留到后端)。
当然,在服务中我需要在购物车数据上创建计算属性,以便我可以提供数量和总数的总和。
但我真的很难真的很难从商店访问'cart'模型以便做到这一点。这是我尝试做的事情:
export default Service.extend({
store: inject.service(),
cartObj: null, // set in init() so cart data can be used in computed properties
init() {
this._super(...arguments);
// get cart model from store, set it to property on the service
let cartObj = this.get('store').peekAll('cart').get('firstObject');
set(this, 'cartObj', cartObj);
},
lineItems: computed('cartObj.cartitems.[]', function() {
// cartitems is a collection stored in each cart object
return get(this, 'cartObj.cartitems');
}),
total: computed.sum('itemPrices'), // cart total
...
无论我在init()中尝试了什么:this.get('store').peekAll('cart').get('firstObject')
或this.store.peekAll('cart').get('firstObject')
或与.objectAt(0)
相同的变体......都无效。
我得到关于“get”不是函数的错误,或者cartObj
赋值评估为null
即使模型存在,其中包含数据:
我在这里缺少什么?
答案 0 :(得分:1)
第一次注入cart
服务时,它会创建实例,并且会调用init方法,您只需要确保那时存储已经填充了cart
模型。
或者您可以尝试使用计算属性
cartObj: Ember.computed(function(){
this.get('store').peekAll('cart').get('firstObject');
})