選択した行のグループ化された行の小計を計算しようとしていますが、すべての要素をループすることで、すべての変更合計を計算できます。誰もグループ化された行から行の値を加算または減算する方法を提案することができます。膨大な数の行があり、すべてを選択するのに時間がかかります。ここに私のサンプルコードがありますhttp://jsfiddle.net/Srinivasa/PAtSd/2/JavascriptでKnockoutを使ってグループ化された行の小計を計算するには?
答えて
あなたのアプローチは私によく見えます。パフォーマンスに問題がある場合は、本当に大きな行数が必要です。その場合、実際にUIを再考したいと考えています。つまり、数量とを選択して観測値を購読し、1冊の書籍の古い値と新しい値に基づいて合計を変更することで、実際に計算を最適化することができます。下のコードはアイデアを示していますが、完全な解決策ではありません。また、標準のknockoutjs observableにはのlastValue属性がありませんので、自分で実装する必要があります(hereはその方法の例です)。
あなたはコンストラクタを予約するパラメータとして、学生のviewmodelを渡す必要があります学生のレベルの小計については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);
}
}
}
:
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);
});
}
おかげでローマン、これはルートモデルによく見えますが、あなたはどのようにして「学生」レベルの小計をすることができますか?私の実際の要求では、それぞれ10〜20行のサブ行を持つ約1000行を処理する必要があります。合計で10,000〜20,000です。パフォーマンスのわずかな改善も役立ちます。 –
私は学生レベルの小計をカバーする答えを更新しました。これはまだ完全な解決策ではなく、単なるアイデアです。 –
- 1. グループ化されたCaseステートメントで合計の%を計算する
- 2. JavaScriptを使った計算
- 3. XAMLのグループ化されたグリッドビューで小計を取得する
- 4. pysparkでグループ化された中央値を計算する
- 5. Mongo集計機能を使用して、ネストされたグループの合計と小計のパーセンテージを計算するにはどうすればよいですか?
- 6. knockout - ユニットが計算されたオブザーバブルをテストする
- 7. オブジェクトの配列内のグループ化されたオブジェクトの配列内の計算された合計でJavaScript
- 8. knockout - 計算された関数でテンプレートデータを使用する方法
- 9. 数字がグループ化されたときの平均を計算するには
- 10. 計算された列をデータフレームにグループ化して追加する
- 11. JavaScript計算が計算されない
- 12. 合計を行グループ式に合計/加算する方法は?
- 13. パンダの行計算の最小値を計算する
- 14. SQL:合計以前のすべてのグループ化された行
- 15. onblurとjavascriptを使用して小計を計算するにはどうすればよいですか?
- 16. MS Accessのグループ化された割合の計算
- 17. Rのグループ化された列で合計するには?
- 18. SQL Server:グループ化された結果の計算
- 19. PythonでCoxeterグループの縮小語を計算する方法は?
- 20. swift 3で計算された初期化子内の計算された変数にアクセスするには?
- 21. OpenCVで平均化されたプロファイルを計算するには
- 22. スポットファイアでの小計計算
- 23. Vue 2 - 入力された行の合計を計算する
- 24. 並列化された計算のランタイムを最小化するにはどうすればよいですか?
- 25. POSの小計を計算する
- 26. jQueryを使用して小計と合計を計算するにはどうすればよいですか?
- 27. 1日ごとにグループ化し、計算されたプロパティをGroupDateで合計する方法
- 28. 計算小計はマルチインデックス
- 29. jqueryを使用して小計を計算する
- 30. Reporting Servicesカスタムコードを使用して小計を計算する
これは良い質問です。あなたが現在持っているものを改善する明白な方法はありません。たぶん私はそれを+1すると、自分よりもスマートな人が見ているかもしれません。 – farina
これはまともなアプローチだと私は同意します。多分、あなたの特定のインターフェイスは行の数を減らすために再考する必要があります。 – madcapnmckay