Sie müssen Routen einrichten, das können Sie mit routeProvider oder UI-Router tun
In diesem Beispiel verwende ich den Routen-Provider zur Demonstration, aber die Idee ist die gleiche.
Hier richte ich eine Route mit currentPage
als Parameter ein:
app.config(function($routeProvider) {
$routeProvider
.when('/page/:currentPage', {
templateUrl: "template.html",
controller: PaginationDemoCtrl
})
});
In Ihrem Controller können Sie die aktuelle Seite aus $routeParams
abrufen:
$scope.currentPage = $routeParams.currentPage || 1; // default auf 1 setzen, wenn der Parameter fehlt
// laden Sie hier Ihre seitenweise Daten vom Server.
Sie könnten einfach die aktuelle Seite mit $watch
überwachen, um Änderungen zu erfassen und den Standort entsprechend zu aktualisieren:
$scope.$watch("currentPage",function(value){
if (value){
$location.path("/page/" + value);
}
})
Quellcode
DEMO-Link
Bei der Routenführung müssen Sie auch Ihren Code aktualisieren, um seitenweise Daten vom Server zu laden. Wir laden Daten nicht sofort, wenn sich die currentPage
ändert (in diesem Fall die $watch-Funktion). Wir laden unsere seitenweise Daten, wenn wir den $routeParam.currentPage
-Parameter abrufen.
Wie von @Harry angefordert, hier eine weitere Lösung zum Generieren von href-Links durch Überschreiben des Bootstrap-HTML-Templates:
app.config(function($routeProvider) {
$routeProvider
.when('/page/:currentPage?', {
templateUrl: "template.html",
controller: PaginationDemoCtrl
})
})
.run(["$templateCache","$rootScope","$location", function($templateCache,$rootScope,$location) {
$rootScope.createPagingLink = function(pageNumber){
return "#" + $location.path().replace(/([0-9])+/,pageNumber);
// Hier ist eine Beispiel-Funktion zum Aufbauen von href-Pfaden. In Ihrer realen App müssen Sie dies möglicherweise verbessern, um mit mehr Fällen umzugehen.
}
$templateCache.put("template/pagination/pagination.html",
"\n" +
" {{getText('first')}}\n" +
" {{getText('previous')}}\n" +
" {{page.text}}\n" +
" {{getText('next')}}\n" +
" {{getText('last')}}\n" +
"");
}]);
Quellcode
DEMO-Link