将一个额外的参数传递给分页扩展器

时间:2013-12-02 11:52:43

标签: javascript knockout.js

我需要修改此分页扩展器:http://jsfiddle.net/zeelux/B4vN2/以接受currentPage变量,而不是硬编码。

pageSize作为参数传递,但我不熟悉如何添加其他参数的语法。

e.g。

ko.extenders.paging = function(target, pageSize, currentPage) {
...
}

var ViewModel = function() {
    this.items = ko.observableArray([...]).extend({
        paging: 5, 2
    });
};

无效。

1 个答案:

答案 0 :(得分:2)

您不能向扩展器功能添加多个参数,但可以传入一个对象作为扩展器的第二个参数,其中包含两个配置选项:

ko.extenders.paging = function(target, config) {
    // default pageSize to 10
    var _pageSize = ko.observable(config.pageSize || 10),
    // default current page to 1
    _currentPage = ko.observable(config.currentPage || 1); 
   //...
}

然后,您可以在使用扩展器时传入具有正确属性的对象:

var ViewModel = function() {
    this.items = ko.observableArray([...]).extend({
         paging: { pageSize: 5, currentPage : 2 }
    });
};

演示JSFiddle

注意:您可以使扩展程序更智能:根据config参数的类型,如果是数字,则将其用作pagesize等。