Knockout.js 敲除js模板未绑定到ko.computed

Knockout.js 敲除js模板未绑定到ko.computed,knockout.js,Knockout.js,为了让附加的代码正常工作,我几乎花了一天的大部分时间在完全沮丧的情况下四处游荡。代码或多或少是从中提取的。我的版本显示第一页,即前10行。单击next(下一步)将启动pagedRows函数,但在我的生命周期内不会显示下一页数据。嘿,帮帮忙 附件是代码 <table> <tr> <th>Id</th> <th>Type</th> <th>Name</th>

为了让附加的代码正常工作,我几乎花了一天的大部分时间在完全沮丧的情况下四处游荡。代码或多或少是从中提取的。我的版本显示第一页,即前10行。单击next(下一步)将启动pagedRows函数,但在我的生命周期内不会显示下一页数据。嘿,帮帮忙

附件是代码

<table>
   <tr>
       <th>Id</th>
       <th>Type</th>
       <th>Name</th>
    </tr>
  <tbody data-bind='template: { name: "fieldTemplate", foreach: pagedRows }'></tbody>
</table>

<a href="#" data-bind="click: previous, visible: pageIndex() > 0">Previous</a>
<a href="#" data-bind="click: next, visible: pageIndex() < maxPageIndex()">Next</a>

<script type="text/html" id="fieldTemplate">
    <tr>
         <td><span data-bind="text:FieldId" /></td>
         <td><span data-bind="text:Type" /></td>
         <td><span data-bind="text:Description" /></td>
    </tr>
</script>

<script>
    function ViewModel(jsondata) {
        var self = this;
        self.fields = ko.observableArray(jsondata);
        self.pageIndex = ko.observable(0);
        self.pageSize = ko.observable(10);

        self.pagedRows = ko.computed(function () {
            var size = self.pageSize();
            var start = self.pageIndex() * size;
            return self.fields.slice(start, start + size);
        });

        self.maxPageIndex = ko.computed(function () {
            return Math.ceil(self.fields().length / self.pageSize()) - 1;
        });

        self.next = function () {
            self.pageIndex(self.pageIndex + 1);
        }
        self.previous = function () {
            self.pageIndex(self.pageIndex - 1);
        }
    }

    $(function () {
        var data = [];
        for (var i = 0; i < 100; i++) {
            data.push({
                FieldId: i,
                Type: "Type" + i,
                Name: "Name" + i,
                Description: "Description" + i
            })
        }

        ko.applyBindings(new ViewModel(data));

    });
</script>

身份证件
类型
名称
函数视图模型(jsondata){
var self=这个;
self.fields=ko.observatarray(jsondata);
self.pageIndex=ko.可观察(0);
self.pageSize=ko.可观察(10);
self.pagedRows=ko.computed(函数(){
var size=self.pageSize();
var start=self.pageIndex()*大小;
返回self.fields.slice(开始,开始+大小);
});
self.maxPageIndex=ko.computed(函数(){
返回Math.ceil(self.fields().length/self.pageSize())-1;
});
self.next=函数(){
self.pageIndex(self.pageIndex+1);
}
self.previous=函数(){
self.pageIndex(self.pageIndex-1);
}
}
$(函数(){
var数据=[];
对于(变量i=0;i<100;i++){
数据推送({
菲尔德德:我,
类型:“类型”+i,
名称:“名称”+i,
说明:“说明”+i
})
}
应用绑定(新视图模型(数据));
});
看起来很直截了当,但我就是不明白。任何帮助都将不胜感激

谢谢


Mike

当您执行下一个/上一个操作时,您需要通过将其作为函数调用来检索可观察对象的值,并从中添加或减去1。因此,您希望执行以下操作:

self.next = function() {
    self.pageIndex(self.pageIndex() + 1);
}
self.previous = function() {
    self.pageIndex(self.pageIndex() - 1);
}