ビューをレンダリングするためにknockout.jsを使用しています.サーバーからデータを取得し、このようにバインドしています..
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel, $("#macro-wrapper")[0]);
私の見解...私はいくつかのビットをトリミングしました...しかし、バインディングは同じです...
<div data-bind="foreach: Data">
<h3>
<a href="#" data-bind="text: Site.Name"></a>
</h3>
<div id="">
<div data-bind="foreach: Comments">
<div class="">
<div class="" data-bind="click: $root.showContent">
<a ></a>
</div>
<span>
<a data-bind="attr: { 'href': Url }, text: SomeText"></a>
</span>
<span class="">
<span class="" data-bind="text: ADate"></span>
</span>
</div>
</div>
</div>
データにはオブジェクトの配列が含まれており、それらのオブジェクトのそれぞれに別の配列が含まれています... レンダリングする必要がある項目は約 500 あります。
私がテストしている間、私は問題を経験していませんが、展開すると、それが遅い PC であるかどうかはわかりませんが、「このスクリプトは低速で実行されています - 停止しますか?」というメッセージが表示されます。メッセージ。「いいえ」を数回クリックすると、レンダリングされます。
ノックアウトで大きなデータセットを扱うテクニックは何ですか? 理想的には、レンダリングを非同期で実行し、ユーザーが忙しく仕事をしている間、自分のことを続けられるようにしたいと思います...
プロパティは実際に監視可能である必要はありません - これは 1 回のレンダリングです...何も変わりません。簡単にするために、マッピング API を使用しています。
更新: OK、変更を加えて、マッピング API を使用しなくなりました - ページは読み込み中ですが、まだゆっくりと... 何かアイデアはありますか? 変化する:var viewModel = data;