Knockout-Vorlage-erstellen der Paginierung UI / links ähnlich wie StackOverflow
Habe ich wieder eine funktionierende Knockout-Vorlage-für einige Paginierung UI, das funktioniert mit einem Knockout-basiertes shared-data-grid. Diese Vorlage macht ein HREF " für jede "Seite" der Daten im Netz.
Den Vorlage arbeiten, aber es ist klunky, denn wenn ich Sie Holen eine Menge von Daten, dann habe ich am Ende mit Dutzende und Dutzende von Navigations-Seite links unterhalb des Gitters. Hier ist die aktuelle Vorlage:
<div class="idTemplate_ko_simpleGrid_pageLinks">
<p>
<span>Go to page:</span>
<!-- ko foreach: ko.utils.range(0, maxPageIndex) -->
<a href="javascript:void(0);"
class="grid-pagination"
data-bind="text: $data + 1, click: function() { $root.currentPageIndex($data) }, css: { selected: $data == $root.currentPageIndex() }"></a>
<!-- /ko -->
</p>
</div>
Den 'currentPageIndex' Wert ist nur ein einfaches ko beobachtbare in das Modell:
this.currentPageIndex = ko.observable(0);
Und 'maxPageIndex' ist eine berechnete beobachtbare in das Modell:
this.maxPageIndex = ko.computed(function () {
return Math.ceil(ko.utils.unwrapObservable(this.filteredItems()).length / this.pageSize()) - 1;
}, this);
Wie kann ich ändern Sie die Vorlage und Modell zum aktivieren von paging-UI ähnlich wie StackOverflow?
Beispiel:
zurück 1 ... 3 4 5 6 7 ... 69 nächsten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau dies ist die pager-Stil habe ich mit für eine Weile jetzt.
Ich gerade fertig mit dem extrahieren der pager-Funktionalität, die ich auf mehreren Projekten, die in eine Verlängerung zu knockout und die Vorlage durch ein Beispiel.
Sehen https://github.com/remcoros/ko.pager für die Quell-und http://remcoros.github.com/ko.pager/example.html für ein Beispiel.
Alle Berechnungen und einige praktische Eigenschaften werden zur Verfügung gestellt von der 'Pager' - Klasse, die Sie erstellen und binden. Aber ein Beispiel working-Vorlage enthalten ist.
Finden Sie in der Quelle example.html für die Nutzung.
Erste, was ich tun würde schauen, ob es irgendwelche benutzerdefinierte Bindungen oder Bibliotheken gibt, die dies tun. Wenn es gibt, erstellen Sie eine benutzerdefinierte Bindung, die verwendet diese Bibliothek.
Back-up-plan - machen Sie Ihre eigenen benutzerdefinierten verbindlich.
Ich würde sowas machen wie:
Dann in meinem custom Bindung, etwas wie das hier tun:
Ich bin so schön, also machte ich ein für Sie in genau zwei Minuten 😛 (So muss es wohl bugs)
Die basiert auf der ersten pager-ich fand, das war, jQuery Paginierung
http://jsfiddle.net/tymTz/2/