いいえ、コードを調整せずに特定の量に達したときにレンダリングを停止する方法はありませんが、次のように指定したページサイズをシミュレートするために計算プロパティを使用することを検討することをお勧めします。
var ViewModel = function () {
var self = this;
var work = new Array(600);
for (var i = 0; i < work.length; i++) {
work[i] = {
name: i.toString()
};
}
self.startPos = ko.observable(0);
self.pageSize = ko.observable(20);
self.workQueue = new ko.observableArray(work);
self.workQueue.paged = ko.computed(function () {
var start = self.startPos();
var end = self.workQueue().length;
end = Math.min(end, start + self.pageSize());
return self.workQueue().slice(start, end);
});
};
var vm = new ViewModel();
ko.applyBindings(vm);
loop();
function loop() {
if (vm.startPos() + vm.pageSize() < vm.workQueue().length) {
vm.startPos(vm.startPos() + 1);
window.setTimeout(loop, 10);
}
}
元の配列の代わりにバインドする元の配列のセカンダリスライスを作成するだけです。
ただし、リストの一部しか表示されない場合、並べ替えの動作はおかしいでしょうか。
http://jsfiddle.net/Dzpkx/1/