Угловой нг-повтор не работает из-за потери объема

0

Я пытаюсь реализовать разбивку на страницы на моей веб-странице.

Когда я выбираю страницу на вкладке pagination, выполняется следующее:

$("#pagination-demo").twbsPagination({
  totalPages: 100,
  visiblePages: 7,
  onPageClick: function(event, page) {
    $scope.PaginateVideos(page);
  }
});

Что вызывает эту функцию:

$scope.PaginateVideos = function(pageNum, searchcriteria) {
  var searchCriteria;
  searchCriteria = searchcriteria;
  return $http({
    url: '/videos/GetVideos?page=' + pageNum + '&search=' + searchCriteria,
    method: 'Get',
    headers: {
      'Content-Type': 'application/json'
    }
  }).success(function(response, status) {
    if (status === 200) {
      $scope.VideoDetailsModel = {};
      $scope.VideoDetailsModel.Data = [];
      return $scope.VideoDetailsModel.Data = response;
    }
  });
};

Когда я проверяю источник в моем браузере просмотра, я вижу, что $ scope.VideoDetailsModel.Data обновляется свежими данными.

Однако элементы ng-repeat показывают старые данные.

После устранения неполадок я могу подтвердить, что вызов события onPageClick: в $ ("# pagination-demo"). TwbsPagination Является источником проблемы.

Если я вызываю функцию PaginateVideos напрямую без разбивки на страницы, работает ng-repeat.

Я пробовал $ scope.apply().. example

$scope.VideoDetailsModel.Data = response
$scope.apply()

Я могу подтвердить, что в pagination VideoDetailsModel.Data определенно есть новые данные.

Не могли бы вы помочь.....

Теги:
angularjs-ng-repeat

2 ответа

0

Я думаю, что ваша проблема может быть связана с изменением ссылочного объекта.

В вашем обработчике успеха вы сделали это:

if (status === 200) {
  $scope.VideoDetailsModel = {};
  $scope.VideoDetailsModel.Data = [];
  return $scope.VideoDetailsModel.Data = response;
}

Можете ли вы попробовать переместить $scope.VideoDetailsModel = {}; вне зависимости от объема вашего контроллера? Что-то вроде:

$scope.VideoDetailsModel = {};

$scope.PaginateVideos = function(pageNum, searchcriteria) {
  ...
  return $http(...).success(function(response, status) {
    if (status === 200) {
      return $scope.VideoDetailsModel.Data = response;
    }
  });
};
0

У меня был тот же ng-контроллер в двух разных разделах моей веб-страницы

Ещё вопросы

Сообщество Overcoder
Наверх
Меню