2014-01-17 3 views
2

나는 장바구니를 만듭니다. 나는 고정물 어댑터를 사용하고 있습니다. 내 모델하위 총 emberjs를 계산하십시오

App.Clothing = DS.Model.extend({ 
     name:  DS.attr('string') 
    , category: DS.attr('string') 
    , img:  DS.attr('string') 
    , price: DS.attr('number') 
    , num:  DS.attr('number') 
    , fullPrice: function(){ 
     return this.get('price') + " $"; 
    }.property('price') 
}) 

App.CartRecord = App.Clothing.extend({ 
    numInCart:DS.attr('number',{defaultValue:1}) 
    , fullPrice: function(){ 
     return this.get('price')*this.get('numInCart'); 
    }.property('numInCart','price') 
}) 
App.CartRecord.FIXTURES = []; 

경로

App.CartRoute = Em.Route.extend({ 
    model: function(){ 
     return this.store.find('cartRecord'); 
    } 
}) 

그리고 내 컨트롤러 내가 총 가격을 계산할 수있는 방법

App.CartController = Em.ArrayController.extend({ 
    totalPrice: 0 
}); 

?

답변

3

sum에 대한 reduceComputed 속성을 함께 넣을 수 있습니다. 다음은 영감을 얻기위한 몇 가지 링크입니다 (one, twothree). 기본적으로, 당신은 같은 것을 할 수 있습니다

Ember.computed.sum = function (dependentKey) { 
    return Ember.reduceComputed.call(null, dependentKey, { 
    initialValue: 0, 

    addedItem: function (accumulatedValue, item, changeMeta, instanceMeta) { 
     return accumulatedValue + item; 
    }, 

    removedItem: function (accumulatedValue, item, changeMeta, instanceMeta) { 
     return accumulatedValue - item; 
    } 
    }); 
}; 

그런 다음 컨트롤러에서이 같은 수행

App.CartController = Em.ArrayController.extend({ 
    prices:  Ember.computed.mapBy('content', 'fullPrice'), 
    totalPrice: Ember.computed.sum('prices') 
}); 
+0

그러나 Ember.computed.sum ('.이 @를 @ each.fullPrice') 반환 장바구니에 clotheis의 목록입니다. 난이 뷰를 렌더링하면

소계 totalPrice {{}} 페이지

제가 수득 : 0 rusnasonov

+0

새 종속 키를 사용하도록 업데이트했습니다. 실제로'@ this. @ each.fullPrice' 스타일 구문을 시도한 적이 없습니다. 이것이 더 잘 작동하는지 알려주세요. 여기에 jsFiddle의 [행동] (http://jsfiddle.net/NQKvy/321/) – Adam

+0

감사합니다! 잘 작동합니다! – rusnasonov