2016-07-02 2 views
0

Попытка закончить разбиение на страницы на небольшое поисковое приложение, используя AngularJS UI bootstrap pagination directive. Почти работайте, ЗА ИСКЛЮЧЕНИЕМ, что я не могу получить первые 10 результатов, которые будут отображаться после первоначального поиска.AngularJS pagination почти работает

Случается, что начальные 100 результатов загружены, и они разбиты на отображение 10 на страницу. Тем не менее, первые 10 не появляются после того, как вы пострадали от некоторых, и нажмите ссылку «1» в элементе управления разбиением на страницы.

Это HTML

<uib-pagination total-items="results.totalItems" max-size="10" items-per-page="itemsPerPage" ng-model="currentPage" ng-change="changePage()" direction-links="true" previous-text="&lsaquo;" next-text="&rsaquo;" class="pagination-sm"></uib-pagination> 

Это моя функция поиска, которая загружает начальные 100 результатов

$scope.search = function() { 
    $scope.isSearching = true; 
    return searchService.search($scope.searchTerms, $scope.currentPage).then(function(es_return) {  
     var totalItems = es_return.hits.total; 
     var totalTime = es_return.took; 
     var numPages = Math.ceil(es_return.hits.total/$scope.itemsPerPage); 
     $scope.results.pagination = []; 
     for (var i = 1; i <= 100; i++) { 
     if(totalItems > 0) 
     $scope.results.totalItems = totalItems; 
     $scope.results.queryTime = totalTime; 
     $scope.results.pagination = searchService.formatResults(es_return.hits.hits); 
     } 
     } 
    ) 
    }; 

И тогда эти функции я использую для пагинацией

$scope.paginate = function() { 
    var begin = (($scope.currentPage - 1) * $scope.itemsPerPage); 
    var end = begin + $scope.itemsPerPage; 
    $scope.results.documents = $scope.results.pagination.slice(begin, end); 
    }; 


$scope.changePage = function() { 
    $scope.paginate(); 
}; 

Я уверен, что виновником этой проблемы является эта строка в $ scope.search()

$scope.results.pagination "=" searchService.formatResults(es_return.hits.hits); 

в частности знак равенства ...?

Я все еще учусь JS и angularjs, так что я не совсем уверен, что следует заменить «=» ... так что появляются начальные 10 результатов

ответ

0

$scope.results.documents кажется, является собственностью холдинга ваш в настоящее время отображаются документы. Вам также нужно установить его, как только searchService вернет свои результаты, а не только при нажатии на разбиение на страницы.

$scope.results.pagination - полный набор результатов; поэтому вы хотите нарезать это так же, как при смене страницы.

+0

спасибо за простой ответ, я переусердствовал это - одна строка простого кода, и это работает! – user3125823

0

Изменить

) };

в ).then((){$scope.paginate();}); }

Таким образом, вы уверены, что нумерация страниц происходит после того, как вы подготовили его.

+0

спасибо за усилия, но другой ответ сработал с первой попытки. У меня есть несколько ошибок, пытающихся заставить вас работать. – user3125823

Смежные вопросы