knockout js pagination jquery ui modal
How to make paging using KnockoutJS and jquery UI dialog.
<a id="atest" class="btn btn-primary" href="#">Click to open the dialog</a> <div id="testfordialog" class="hidden"> <div id="test" class="container"> <table class="table table-bordered"> <thead> <tr> <th>Id</th> <th>Name</th> <th>Phone</th> </tr> </thead> <tbody data-bind="foreach: pagedItems"> <tr> <td data-bind="text: id"></td> <td data-bind="text: name"></td> <td data-bind="text: phone"></td> </tr> </tbody> </table> <ul class="pager"> <li data-bind="css: {'disabled': !previousPageEnabled()}"> <a href="#" data-bind="click: previousPage">Previous</a> </li> <li data-bind="css: {'disabled': !nextPageEnabled()}"> <a href="#" data-bind="click: nextPage">Next</a> </li> </ul> </div>
var StaticDataExample1 = function(data){ // stuff I care about this.items = ko.observableArray(data); // pager related stuff // --------------------------------------------- this.currentPage = ko.observable(1); this.perPage = 5; this.pagedItems = ko.computed(function(){ var pg = this.currentPage(), start = this.perPage * (pg-1), end = start + this.perPage; return this.items().slice(start,end); }, this); this.nextPage = function(){ if(this.nextPageEnabled()) this.currentPage(this.currentPage()+1); }; this.nextPageEnabled = ko.computed(function(){ return this.items().length > this.perPage * this.currentPage(); },this); this.previousPage = function(){ if(this.previousPageEnabled()) this.currentPage(this.currentPage()-1); }; this.previousPageEnabled = ko.computed(function(){ return this.currentPage() > 1; },this); }; var model = new StaticDataExample1(data); ko.applyBindings(model, document.getElementById("test")); $(document).on("click", "[id*=atest]", function () { $("#test").dialog({ height: 420, width: 430, modal: true, buttons: [{ text: "Cancel", tabIndex: -1, click: function () { $(this).dialog("close"); } }], close: function () { }, open: function () { model.currentPage(1); } }); });DEMO
knockout js pagination jquery ui modal
Reviewed by Bhaumik Patel
on
7:02 PM
Rating: