ember:无法从服务

时间:2017-04-24 04:40:28

标签: ember.js ember-data

我正在处理将要注入的购物车服务,我正在使用余烬数据来存储购物车数据(因为我需要将购物车保留到后端)。

当然,在服务中我需要在购物车数据上创建计算属性,以便我可以提供数量和总数的总和。

但我真的很难真的很难从商店访问'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

即使模型存在,其中包含数据:

enter image description here

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

第一次注入cart服务时,它会创建实例,并且会调用init方法,您只需要确保那时存储已经填充了cart模型。
或者您可以尝试使用计算属性

cartObj: Ember.computed(function(){
 this.get('store').peekAll('cart').get('firstObject');
})