From 829874b38be8c2d7d190833ea3d4601f5be681cd Mon Sep 17 00:00:00 2001 From: Eike Cochu <eike@cochu.com> Date: Sat, 6 Feb 2016 15:18:18 +0100 Subject: [PATCH] updated pagination, will reload based on watcher instead of search --- vipra-ui/app/html/directives/pagination.html | 6 ++--- vipra-ui/app/js/app.js | 9 +++++--- vipra-ui/app/js/controllers.js | 23 ++++++++++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/vipra-ui/app/html/directives/pagination.html b/vipra-ui/app/html/directives/pagination.html index 3947b26b..7bd65a8d 100644 --- a/vipra-ui/app/html/directives/pagination.html +++ b/vipra-ui/app/html/directives/pagination.html @@ -1,14 +1,14 @@ <nav ng-show="total > limit"> <ul class="pagination"> <li ng-class="{disabled:page==1}"> - <a ui-sref="{page:page==2?null:page-1}" ng-show="page>1">«</a> + <a ui-sref="{page:page==2?null:page-1}" ng-show="page>1" ng-click="changePage(page-1)">«</a> <span ng-hide="page>1">«</span> </li> <li ng-class="{active:p==page}" ng-repeat="p in pages"> - <a ui-sref="{page:p===1?null:p}" ng-bind="p"></a> + <a ui-sref="{page:p===1?null:p}" ng-bind="p" ng-click="changePage(p)"></a> </li> <li ng-class="{disabled:page>=maxPage}"> - <a ui-sref="{page:page+1}" ng-show="page<maxPage">»</a> + <a ui-sref="{page:page+1}" ng-show="page<maxPage" ng-click="changePage(page+1)">»</a> <span ng-hide="page<maxPage">»</span> </li> </ul> diff --git a/vipra-ui/app/js/app.js b/vipra-ui/app/js/app.js index 9b679b93..6b6456a2 100644 --- a/vipra-ui/app/js/app.js +++ b/vipra-ui/app/js/app.js @@ -48,7 +48,8 @@ $stateProvider.state('articles.index', { url: '?page', templateUrl: tplBase + '/articles/index.html', - controller: 'ArticlesIndexController' + controller: 'ArticlesIndexController', + reloadOnSearch: false }); $stateProvider.state('articles.show', { @@ -68,7 +69,8 @@ $stateProvider.state('topics.index', { url: '?page', templateUrl: tplBase + '/topics/index.html', - controller: 'TopicsIndexController' + controller: 'TopicsIndexController', + reloadOnSearch: false }); $stateProvider.state('topics.show', { @@ -88,7 +90,8 @@ $stateProvider.state('words.index', { url: '?page', templateUrl: tplBase + '/words/index.html', - controller: 'WordsIndexController' + controller: 'WordsIndexController', + reloadOnSearch: false }); $stateProvider.state('words.show', { diff --git a/vipra-ui/app/js/controllers.js b/vipra-ui/app/js/controllers.js index 120db447..ddfd22e2 100644 --- a/vipra-ui/app/js/controllers.js +++ b/vipra-ui/app/js/controllers.js @@ -79,13 +79,19 @@ $scope.page = Math.max($stateParams.page || 1, 1); $scope.limit = pageSize; - ArticleFactory.query({ - skip: ($scope.page-1)*pageSize, - limit: pageSize - }, function(response) { - $scope.articles = response.data; - $scope.articlesMeta = response.meta; - $scope.queryTime = response.$queryTime; + var loadedOnce = false; + $scope.$watch('page', function(newVal, oldVal) { + if(newVal != oldVal || !loadedOnce) { + loadedOnce = true; + ArticleFactory.query({ + skip: ($scope.page-1)*pageSize, + limit: pageSize + }, function(response) { + $scope.articles = response.data; + $scope.articlesMeta = response.meta; + $scope.queryTime = response.$queryTime; + }); + } }); }]); @@ -214,6 +220,9 @@ $scope.calculatePages(); + $scope.changePage = function(page) { + $scope.page = page; + }; }]); })(); \ No newline at end of file -- GitLab