ember: 无法从服务访问模型

ember: cannot access model from service

我正在开发一个将被注入的购物车服务,我正在使用 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

即使模型在那里,里面有数据:

我在这里错过了什么?

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

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