使用knockout js滚动显示分页
scroll display pagination with knockout js
我想使用knockout js来启用滚动分页
我想在url
和id
传递到我的' GetPage(控制器,id#,页#))目前它是硬编码,但我想改变这一点。
淘汰赛js
$.views.Roster.GetPage = function (url, id, pageNumber) {
$.grain.Ajax.Get({
Url: url,
SectionID: {id:id},
DataToSubmit: { pageNumber: pageNumber, id: id },
DataType: "json",
OnSuccess: function (data, status, jqXHR) {
$.views.Roster.RosterViewModel.AddUsers(data);
}
});
};
Next = function () {
var _page = $.views.Roster.ViewModel.CurrentPage() + 1;
$.views.Roster.ViewModel.CurrentPage(_page);
$.views.Roster.GetPage("/api/Roster", 9, _page);
}
滚动分页
$(document).ready(function(){
$('#main').scroll(function () {
if ($('#main').scrollTop() >= $(document).height() - $('#main').height()) {
$('#status').text('Loading more items...' + $.views.Roster.ViewModel.TotalRoster());
if ($.views.Roster.ViewModel.RosterUsers() == null ) {
$('#status').hide();
$('#done').text('No more items...'),
$('#main').unbind('scroll');
}
setTimeout(updateStatus, 2500);
}
//updateStatus();
});
});
将getRoster函数中的数据更改为服务器函数期望您返回的数据。此外,删除代码$.views. roster。GetRoster,不再需要了。当你这样做的时候。applyBindings(新.views.Roster.RosterViewModel美元());您应该获得第一页的数据,随后,当您滚动时,视图模型上的next()调用将继续分页。逻辑都是你的。
$.views.Roster.RosterViewModel = function (data) {
var self = this;
self.RosterUsers = ko.observableArray([]);
_rosterUsers = self.RosterUsers;
self.currentPage = ko.observable(1);
self.toDisplay = ko.observable(10);
var filteredRoster = ko.computed(function(){
var init = (self.currentPage()-1)* self.toDisplay(),
filteredList = [],
rosterLength = self.RosterUsers().length,
displayLimit = self.toDisplay();
if(rosterLength == 0)
return[];
for(var i = init; i<(displayLimit + init) && i<rosterLength; i++)
{
filteredList.push(self.RosterUsers()[i]);
}
return filteredList;
}),
totalRoster = ko.computed(function () {
return self.RosterUsers().length;
}),
changePage = function (data) {
self.currentPage(data);
},
next = function () {
if ((self.currentPage() * self.toDisplay()) > self.RosterUsers().length)
return;
self.currentPage(self.currentPage() + 1);
},
prev = function () {
if (self.currentPage() === 1)
return;
self.currentPage(self.currentPage() - 1);
},
getRoster = ko.computed(function () {
var data = {
currentPage: self.currentPage(),
pageSize: self.toDisplay()
},
$promise = _makeRequest(data);
$promise.done(function (data) {
var localArray = [];
ko.utils.arrayForEach(data, function(d){
localArray.push(new $.views.Roster.UserViewModel(d));
});
self.RosterUsers.push.apply(self.RosterUsers,localArray);
});
}),
_makeRequest = function(data){
return $.getJSON('your url here', data);
};
};
相关文章:
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 如何在分页事件中突出显示数据表中的单词
- 分页逻辑显示错误的页码
- 数据表不显示与表的分页
- jqGrid不显示分页链接
- Angularjs:目录分页控件没有'即使按下页面按钮,也不会显示下一页
- Angularjs在使用分页时无法显示orderBy
- KendoUI网格客户端分页在总页面上总是显示为零
- DataTable没有显示分页按钮和记录信息-JQuery
- 在ajax分页视图(cakephp)中显示adsense的问题
- 如何以反向/从右到左的顺序显示阿拉伯语网站的Nivo滑块分页
- 带有
标记的 jQuery 分页显示单个页面中的所有页面,如果它里面有其他标记
- 在分页中显示数据表的第一个和最后一个按钮
- jQuery - 进度条和分页,具体取决于显示的元素和枚举数
- 页面加载时显示完整列表的分页
- 在 JavaScript 选项卡中显示分页
- 如何使用javascript显示分页
- 没有弹出窗口显示分页表
- 使用knockout js滚动显示分页
- 根据记录的数量显示分页