レコードのリストを持つ 1 つの viewModel を持つ、かなり複雑なアプリがあります。
app.records = ko.observableArray([])
AJAX を使用して、サーバーから JSON を取得し、配列に詰め込みます。
$.getJSON("/api/records", function(data){
app.records($.map(data, function(item){
r = new Record(item);
return r;
});
});
これは、少なくとも私のテスト データセットの 6 つの項目ではうまく機能します。アプリはほぼ瞬時に読み込まれます。しかし、これを行う新しいレコードの作成ボタンもあります。
$.post("/api/records", {}, function(record){
r = new Record(record);
console.log("About to push...");
app.records.push(r);
console.log("Pushed the new record.");
});
最初のログ行はすぐに表示されますが、2 行目は表示されるまでに約 8 秒かかります。プッシュをコメントアウトすると、操作が事実上瞬時になります。問題は、私が持っているかなり複雑な計算変数のかなりの数から生じていると思います。プッシュにより、 EVERYTHINGが再計算されていると思います。それでも、奇妙なのは、ページの読み込み時に 6 つのテスト項目をすぐに追加できることです。
これをデバッグするためのヒントを教えてもらえますか? アプリは、コードを簡単に共有したり、問題を切り分ける JSFiddle を作成したりできる状態ではありません。何か問題が解決するかどうかを確認するためにやみくもに行をコメントアウトするのは気が進まない。時間がかかる可能性があるからだ。誰にもアイデアはありますか?それとも少なくとも一般的な戦略ですか?:)
(私は現在 2.1 リリース候補を使用しています。問題は Knockout 2.0 でも発生します。)