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 = {};
Как уже упоминалось, я бы также посмотрел на потенциальную проблему с кэшированием.