【发布时间】:2013-05-29 03:13:16
【问题描述】:
我正在使用 KnockoutJS 和 Twitter Bootstrap 构建一个简单的分页表格视图。现在,除了在页面加载时我无法加载初始数据集外,我一切正常。查看我的视图模型,您可以看到通过 RESTful API 在客户存储库中“导航”时加载了正确的数据。
如何获取要加载的初始数据?
<script>
var ListViewModel = function() {
var self = this;
window.viewModel = self;
//Properties
self.list = ko.observableArray();
self.pageSize = ko.observable(20);
self.pageIndex = ko.observable(0);
self.itemCount = ko.observable();
self.maxPageIndex = ko.dependentObservable(function () {
return Math.ceil(self.itemCount() / self.pageSize()) - 1;
});
self.allPages = ko.dependentObservable(function () {
var pages = [];
for (i = 0; i <= self.maxPageIndex() ; i++) {
pages.push({
pageNumber: (i + 1)
});
}
return pages;
});
//navigation Functions
self.previousPage = function () {
if (self.pageIndex() > 0) {
self.pageIndex(self.pageIndex() - 1);
}
self.getItems();
};
self.nextPage = function () {
if (self.pageIndex() < self.maxPageIndex()) {
self.pageIndex(self.pageIndex() + 1);
}
self.getItems();
};
self.moveToPage = function (index) {
self.pageIndex(index);
self.getItems();
};
//API interactions
self.getItems = function () {
$.ajax({
url: '/api/customer/?pageNumber='+self.pageIndex()+"&pageSize="+self.pageSize(),
async: false,
dataType: 'json',
success: function (result) {
self.list(result);
}
});
};
self.getTotalItemCount = function() {
//TODO: Add call to fetch total number of customers in the database and set it to self.itemCount property.
};
};
$(document).ready(function() {
ko.applyBindings(new ListViewModel());
});
</script>
【问题讨论】:
-
在进一步使用淘汰赛之前,请阅读 John Papa 关于使用淘汰赛构建 SPA 的文章或查看源代码github.com/johnpapa/PluralsightSpaJumpStartFinal
标签: c# asp.net-mvc twitter-bootstrap mvvm knockout.js