Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 敲除js显示可观察数组的子集_Knockout.js_Knockout Sortable - Fatal编程技术网

Knockout.js 敲除js显示可观察数组的子集

Knockout.js 敲除js显示可观察数组的子集,knockout.js,knockout-sortable,Knockout.js,Knockout Sortable,我有一个viewmodel,其中有600个项目(它们是任务提醒),在一个名为workQueue的可观察数组中按最旧到最新排序,我将其显示为ul>li。这可能需要一些时间来渲染 我还使用了knockout sortable <ul class="drop-target" data-bind="sortable: workQueue"> <li data-bind="text: title"></li> </ul> 我希望做的只是呈现

我有一个viewmodel,其中有600个项目(它们是任务提醒),在一个名为workQueue的可观察数组中按最旧到最新排序,我将其显示为ul>li。这可能需要一些时间来渲染

我还使用了knockout sortable

<ul class="drop-target" data-bind="sortable: workQueue">
    <li data-bind="text: title"></li>
</ul>
我希望做的只是呈现列表中的前20项,当第一项弹出时,列表中的下一项显示出来。如果用户过滤列表,则最多只能显示20个


是否有一个可排序的方法:当我命中某个计数时退出渲染。

< P>不,当你在不调整代码的情况下达到某个数量时,没有一个方法可以停止渲染,但是你可能想考虑使用一个计算的属性来模拟你指定的页面大小:
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);
    }

}
var ViewModel=函数(){
var self=这个;
var工作=新阵列(600);
对于(变量i=0;i
它只是创建原始数组的一个辅助切片,您将绑定到该切片而不是原始切片

但是,如果只能看到列表的一部分,排序行为会很奇怪


可排序的东西用于拖放。用户只想看到最旧的项目,但是有一个巨大的积压工作,这使得页面呈现速度非常慢。