在控制器emberjs中获取模型

时间:2015-06-03 19:30:57

标签: javascript ember.js ember-data

我需要获取从JSON API返回的所有对象的总价格。

我的想法是创建一个控制器并在其上设置属性。然后在每个对象上抓取模型循环并添加到对象总价格的预定义属性。像这样:

export default Ember.Controller.extend({
    orderTotal: 0,

    getOrderTotal: function(){
        var model = this.get('model');

        model.forEach(function(c){
            var order_total = this.get('orderTotal') * c.total_price;
            this.set('orderTotal', order_total)
        });
    }
});

问题是我无法得到模型。如何在控制器内访问模型?

1 个答案:

答案 0 :(得分:1)

模型可能是异步加载的,因此您必须使用.then(...)等待加载的模型。

this.get('model').then(function(data) { ... create sum using `data` });

虽然我会使用计算属性来创建可能发生变化的事物的总和:

allPrices: Ember.computed.mapBy('model', 'price'),
totalPrice: Ember.computed.sum('allPrices')

http://emberjs.jsbin.com/wiwiqulozi/1/