Angular $http get get просто добавляет полученный JSON в переменную $scope вместо замены при каждом обновлении

У меня есть это простое действие контроллера, которое должно выполнить всю магию запроса некоторых объектов json и отобразить их в списке:

$scope.onReload = function() {
  $http.get('http://some-demu-url.com/items.json').success(function(data) {
    $scope.items = data;
    $scope.$broadcast('scroll.refreshComplete');
  });
};

Концепция проста: функция инициализируется при загрузке приложения (например: $scope.onReload();), и это работает очень хорошо.

Тем не менее, у меня есть действие обновления, которое запускает функцию onRefresh, когда пользователь что-то тянет вниз. Новые данные должны заменить старые данные при активации обновления, но это не то, что происходит! Новые данные извлекаются, но добавляются в список вместо замены старых.

Это означает, что если JSON содержит информацию для двух элементов списка A и B:

  • На init есть A & B в списке (как и предполагалось)
  • При первом обновлении все еще остаются A & B из init и A & B из нового запроса get.
  • Во второй раз уже 6 пунктов (A, B, A, B, A, B) в списке

и так далее...!

Я не знаю, что я делаю не так.

1 ответ

Не уверен, что это полное решение, но попробуйте инициализировать элементы (в вашем OnReload()), чтобы очистить:

$ scope.items = {};

Как уже упоминалось, я бы также посмотрел на потенциальную проблему с кэшированием.

Другие вопросы по тегам