使用jQuery \ Knockout.Js \ JavaScript推进分页:“查看更多数据”

时间:2014-05-12 07:00:51

标签: javascript jquery arrays knockout.js

我有一个包含一些数据记录的数组(来自我的后端,我正在检索这些数据)。

我正在使用此数组绑定网格。这是使用knockout.Js。

实现的

我的最终数组绑定到网格:_results(commonData);

比如说:

function BindData() {
// Go to Backend . get the data and push it to _results.

}

这里的commonData是一个包含我后端数据的数组。 _results是一个可观察的数组。

以下是我的标记结构:

<tbody data-bind="foreach: results">
<tr>
<td data-bind="text: Emp ID"></td>
<td data-bind="text: Emp Status"></td>
<td data-bind="text: Emp Dept"></td>
<td data-bind="text: Emp Code"></td>
<td data-bind="text: Emp Address"></td>
<td data-bind="text: Emp Manager"></td>
<td data-bind="text: Emp Reporting Manager"></td>
</tr>
</tbody>

这非常有效。

我有一个行计数变量。

var _rowCount = 5;

现在:我只想一次显示5条记录(行)。 如果来自后端的记录超过5条,用户应点击&#34;查看更多&#34;我想调用My BindData()方法。 我应该每次从服务器获取数据。但我不应重新绑定现有数据。

如果总共有十条记录,我只会绑定5.点击查看更多应该获得接下来的五条记录并将其添加到。前五个应保持原样。

关于如何实施这一点的任何想法? 建议,欢迎举例。

非常感谢!!!!!

1 个答案:

答案 0 :(得分:0)

你正在使用observableArray,所以你基本上写了自己的答案:

function BindData() {
    // Go to Backend . get the data and push it to _results.

} 

为你解决一下问题:

function BindData() {

    var onSuccess = function(data){
        for(var i=0; i<data.length);i++){
            //just push each object onto the observableArray.
            that.results.push(data[i]);


            // you might need to map some stuff here to observable, maybe with the
            // mapping plugin, but basically the same way you got your first 5?
        }
    }

    $.post('get-next-5-url', 'data', onSuccess);
}