선택한 행에 대해 그룹화 된 행에 대한 소계를 계산하려고하는데 모든 요소를 반복하면서 모든 변경 총계를 계산할 수 있지만 계산할 수 있습니다. 누구나 그룹화 된 행에서 행 값을 더하거나 뺄 수있는 방법을 제안 할 수 있습니다. 우리가 엄청난 수의 행을 가지고 있고, 모두를 선택하면 더 많은 시간이 걸린다. 여기 내 샘플 코드입니다 http://jsfiddle.net/Srinivasa/PAtSd/2/Javascript에서 녹아웃을 사용하여 그룹화 된 행의 부분합을 계산하는 방법은 무엇입니까?
답변
당신의 접근 방식은 나에게 좋을 것 같습니다. 성능 문제가있는 경우 실제로 행 수가 많아야합니다.이 경우 UI를 다시 생각해보고 싶을 것입니다. 즉, 실제로 수량이 및 으로 선택되어 관찰 값을 구독하고 한 권의 책에 대한 이전 값과 새 값을 기반으로 합계를 변경하여 계산을 최적화 할 수 있습니다. 아래 코드는 아이디어를 보여 주지만 완전한 해결책은 아닙니다. 또한, 표준 knockoutjs observable에는 lastValue 속성이 없으므로 직접 구현해야합니다 (here).
function book(...){
var self = this;
...
self.qty.subscribe(function(newValue){
if(self.selected()){
//grandTotal is regular observable, not a computed one
var grandTotal = rootViewModel.grandTotal();
grandTotal = grandTotal - self.qty.lastValue() + newValue;
rootViewModel(grandTotal);
}
}
}
학생 수준의 합계 위해 당신은 예약 매개 변수로 학생의 ViewModel을 통과해야합니다 생성자 :
당신은 아마 이런 식으로 학생들의 생성자를 변경해야합니다function book(student, name, qty){
var self = this;
...
self.qty.subscribe(function(newValue){
if(self.selected()){
//student.noOfBooks is regular observable, not a computed one
var noOfBooks = student.noOfBooks();
noOfBooks = noOfBooks - self.qty.lastValue() + newValue;
student.noOfBooks(noOfBooks);
}
}
}
:
function student(name, books /*array of plain object, not view models*/){
var self = this;
self.name = name;
self.noOfBooks = ko.observable()
self.books = ko.utils.arrayMap(books, function(b){
return new book(self, b.name, b.qty);
});
}
Roman 씨, 루트 모델에 좋을 것 같습니다. '학생'수준의 소계를 위해 어떻게 할 수 있습니까? 내 실제 요구 사항에서, 나는 10 개에서 20 개의 서브 행을 갖는 약 1000 개의 행을 각각 10,000 개에서 20,000 개까지 처리해야합니다. 따라서 성능이 약간 향상 되어도 도움이됩니다. –
학생 수준의 소계에 대한 답변을 업데이트했습니다. 이것은 여전히 완전한 해결책은 아니며 아이디어 일뿐입니다. –
- 1. 부분합을 계산하는 방도
- 2. onblur 및 javascript를 사용하여 부분합을 계산하는 방법은 무엇입니까?
- 3. 녹아웃을 사용하여 새 요소를 바인딩하는 방법은 무엇입니까?
- 4. 단일 행의 값을 계산하는 방법은 무엇입니까?
- 5. Jquery SlickGrid - 그룹화 된 행의 구분을 추가하십시오.
- 6. Excel 바닥 글에 부분합을 삽입하는 방법은 무엇입니까?
- 7. mysql에서 행의 특정 기호를 계산하는 방법
- 8. MySql에서 외래 키를 참조하는 행의 수를 계산하는 방법은 무엇입니까?
- 9. 트리거를 사용하여 계산하는 방법은 무엇입니까?
- 10. 녹아웃을 위해 매핑 플러그인을 사용하는 방법은 무엇입니까?
- 11. Slickgrid에서 녹아웃을 사용하는 적절한 방법은 무엇입니까
- 12. 하위 그룹화 된 그림 행의 여러 Tikz- 트리
- 13. sql query - 행의 값을 개별적으로 계산하는 방법은 무엇입니까?
- 14. Javascript에서 선형 부동 소수점의 곡선을 계산하는 방법은 무엇입니까?
- 15. openxml을 사용하여 새로 삽입 된 행의 ID를 얻는 방법은 무엇입니까?
- 16. 테이블에있는 행의 수를 계산하는 방법
- 17. 그룹화 된 테이블보기에 UISwitch를 추가하는 방법은 무엇입니까?
- 18. 코딩 된 UI 테스트를 사용하여 페이지로드 시간을 계산하는 방법은 무엇입니까?
- 19. 회전 된 축에서 점을 계산하는 방법은 무엇입니까?
- 20. LEFT JOIN을 사용하여 계산하는 방법은 무엇입니까?
- 21. 는 "다른 행의 데이터를 기준으로 그룹화"알고리즘
- 22. 조각화를 계산하는 방법은 무엇입니까?
- 23. JavaScript에서 RegExp를 사용하여 문자열을 추출하는 방법은 무엇입니까?
- 24. 녹아웃을 사용하는 동적 템플릿
- 25. opencv를 사용하여 플래시 수를 계산하는 방법은 무엇입니까?
- 26. 자바에서 조합을 계산하는 방법은 무엇입니까? 메모를 사용하여?
- 27. neo4j를 사용하여 상호 친구를 계산하는 방법은 무엇입니까?
- 28. SUM과 CASE를 사용하여 승패를 계산하는 방법은 무엇입니까?
- 29. xslt를 사용하여 출력 행을 계산하는 방법은 무엇입니까?
- 30. jQuery를 사용하여 체크 박스를 계산하는 방법은 무엇입니까?
이것은 좋은 질문입니다. 현재 가지고있는 것을 개선 할 수있는 확실한 방법은 없습니다. 어쩌면 내가 +1하면 더 똑똑한 사람이 보일 수 있습니다. – farina
괜찮은 접근이라고 나는 동의한다. 어쩌면 특정 인터페이스가 행 수를 줄이기 위해 재고 할 필요가있을 수 있습니다. – madcapnmckay