$ watch не обновляет список ng-repeat - PullRequest
2 голосов
/ 08 ноября 2019

У меня есть список результатов поиска, который я должен обновить на основе выбранного номера страницы.

$scope.changePage = function (currentindex, selectedPage) {  
    $scope.currentPage = selectedPage;
    $scope.selectedPageIndex = currentindex;         
    $scope.apply();        
}

Здесь я изменяю переменную $ scope currentPage. И это моя функция $ watch, где я меняю список результатов на основе номера страницы,

$scope.$watch('currentPage', function () {        
    var begin = (($scope.currentPage-1) * 10),
        end = begin + 10; 
    $scope.searchResultList = $scope.mainList.slice(begin, end);    // put your updation of list here 
});

Ответы [ 3 ]

0 голосов
/ 08 ноября 2019

Попробуй это. Вы можете передать значение функции в качестве первого параметра и вернуть переменную для просмотра.

$scope.$watch(
  function() { 
    return $scope.currentPage 
  }, 
  function () {        
    var begin = (($scope.currentPage-1) * 10);
    var end = begin + 10;
    $scope.searchResultList = $scope.mainList.slice(begin, end);
  }
);
0 голосов
/ 08 ноября 2019

Лучше использовать фильтр limitTo в ng-repeat:

<div ng-repeat="item in mainList | limitTo : 10 : (currentPage-1) * 10">
  {{item}}
</div>

Для получения дополнительной информации см.

0 голосов
/ 08 ноября 2019

Вы можете передать флаг true в качестве третьего аргумента в случае, если $ scope. Функция $ watch может сработать сразу после изменения переменной currentPage. Кроме того, вы можете просто передать переменную $ scope, чтобы убедиться, что переменная области работает правильно.

$scope.$watch('currentPage', function (newValue, oldValue, scope) {

}, true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...