diff --git a/vipra-ui/app/html/directives/pagination.html b/vipra-ui/app/html/directives/pagination.html
index 3947b26b1cfddd4bc94239ea0e32e10c816f72d2..7bd65a8d8a54188480f8f1a5ec9097c637174f61 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">&laquo;</a>
+      <a ui-sref="{page:page==2?null:page-1}" ng-show="page>1" ng-click="changePage(page-1)">&laquo;</a>
       <span ng-hide="page>1">&laquo;</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">&raquo;</a>
+      <a ui-sref="{page:page+1}" ng-show="page<maxPage" ng-click="changePage(page+1)">&raquo;</a>
       <span ng-hide="page<maxPage">&raquo;</span>
     </li>
   </ul>
diff --git a/vipra-ui/app/js/app.js b/vipra-ui/app/js/app.js
index 9b679b93edd12d6f3eb45f804241e0b959a0aff4..6b6456a299d79b789abb2e9bf0a08a4144c29620 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 120db44780b75cb43199b234e174a34d5fa63e3b..ddfd22e2af1b6ee2b77f9e09784bfdba42aa76a2 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