녹아웃 구성 요소 수준에서 페이지 매김을 처리하는 현재 및 미래 프로젝트의 구성 요소를 작성하고 있습니다. 나는 대답을 here에서 받아 들였습니다. 또한 녹아웃 구성 요소 페이지 here을 참조하십시오.knockout.js 구성 요소를 사용하여 페이지 매김을 올바르게 작성하는 방법은 무엇입니까?
여기까지 내 구성 요소입니다. 동적 테이블 표제는 물론 실제로 표시 할 데이터를 얻는 데 문제가 있습니다.
ko.components.register("jPage", {
viewModel: function (params) {
var self = this;
self.Items = params.Items;
self.Keys = Object.keys(self.Items);
self.PerPage = params.PerPage;
self.Page = 1;
self.PagesTotal = Math.ceil(self.Items.length/self.PerPage);
self.ItemsVisible = ko.computed(function() {
first = (self.Page * self.PerPage) - self.PerPage;
return self.Items.slice(first, first + self.PerPage);
})
self.ChangePage = function (_page) {
if (_page < 1 || _page > self.PagesTotal) return;
this.Page(_page);
}.bind(this);
},
template:
'<div data-bind="foreach: ItemsVisible"> \
Display Table headers and data here <br>\
<span data-bind="text: $data[0]"> </span>\
</div>\
<nav aria-label="Page navigation">\
<ul class="pagination">\
<li data-bind="css:{disabled: Page <= 1} ">\
<a aria-label="Previous" data-bind="click: ChangePage(Page - 1)">\
<span aria-hidden="true">«</span>\
</a>\
</li>\
<li><a data-bind="text: Page -2, click: ChangePage(Page - 2), visible: Page > 2 "> </a></li>\
<li><a data-bind="text: Page -1, click: ChangePage(Page - 1), visible: Page > 1 "> </a></li>\
<li class="active"><a data-bind="text: Page"> </a></li>\
<li><a data-bind="text: Page +1, click: ChangePage(Page + 1), visible: (PagesTotal > Page +0) "></a></li>\
<li><a data-bind="text: Page +2, click: ChangePage(Page + 2), visible: (PagesTotal > Page +1)"></a></li>\
<li data-bind="css: {disabled: (PagesTotal < Page)}">\
<a aria-label="Next" data-bind="click: ChangePage(Page + 1)">\
<span aria-hidden="true">»</span>\
</a>\
</li>\
</ul>\
</nav>\
'
})
이 구성 요소를 호출 할 것이다 방법입니다
[
{FirstName: "John", Email: "[email protected]"},
{FirstName: "Steve", Email: "[email protected]"},
{FirstName: "Jim", Email: "[email protected]"}
]
어떤 변수 나 상황에 맞는 것은 내가 Items
키/값에 액세스 할 수없는 오전 :
<div data-bind="component: { name: 'jPage', params: { Items: CustomerList(), PerPage: 25} }">
CustomerList
과 같을 것이다?
추가 참고 사항. 결과없이 조작 할 수 있기 때문에 필요한 데이터 형식이 없습니다.
첫째는 속성을 관찰해야 변화에 반응합니다. 그래서 페이지 속성은 그다지 효과가 없을 것입니다. 일단 그것을 고치고 사용 된 모든 참조를 삭제하면 많은 문제가 사라집니다. http://knockoutjs.com/documentation/observables.html –