2012-06-07 4 views
6

WCF에서 데이터를 받고 테이블에 바인딩합니다. 이 포럼에서 일부 계산 필드를 추가하는 데 도움이되었으며 모든 것이 완벽하게 작동합니다. 이 표의 바닥 글에 총계를 추가하고 싶습니다. 내 페이지의 간단한 버전은 http://jsfiddle.net/qeUHd/3/에서 볼 수 있습니다. 기본적으로 내 샘플 "금액"의 다른 필드의 합계 결과 인 ViewModel에 필드를 추가하는 방법을 배우고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다. http://jsfiddle.net/qeUHd/3/knockout 계산 합계

답변

11

당신의 피들에서는 데이터 세트를 self.model에 매핑하므로 self.model은 observableArray입니다. 그때 이후로, 나는 합계를 얻기 위해 computed value을 합칠 필요가있었습니다.

self.total = ko.computed(function(){ 
    var total = 0; 
    for(var p = 0; p < self.model().length; ++p) 
    { 
     total += self.model()[p].Amount(); 
    } 
    return total; 
}); 

http://jsfiddle.net/qeUHd/5/

그럼 그냥 바인딩해야합니다.

<td data-bind="text: total"> 

하기는 조금 뒤로 일을하고 있지만 나는 당신이 당신의 데이터를 수신하고있는 방식에 의한 가정 해, 그래서 그것을 처리와에 움직였다.

+0

대단히 감사합니다. 덕분에 멋진 전문가 팀에게 감사의 말을 전합니다. –

1

이러한 종류의 계산 된 필드를 뷰 모델에 배치하는 것이 일반적으로 권장되지만 (일반적으로 속해있는 위치와 마찬가지로) 추가 계산 된 속성을 추가하기 어려운 데이터로 작업하는 경우가 있습니다. 보기 내에서 데이터를 그룹화하는 경우가 그 예입니다. 이 경우 여전히 총계를 표시 할 수 있지만 계산식을보기로 옮길 수는 있습니다.