Задать вопрос
@godmodeon08
амбициозный разраб

Как правильно обновить элемент массива?

Привет!
Начну с конца вопроса. Нужно обновить только те элементы массива, которые изменились. Нельзя обновлять весь массив!

[{"id":87510,"name":"1","date":1506983543"}{"id":87512,"name":"2","date":1506983543"}]

Контроллер:
$scope.getData = function() {
    $http.get('/api/arr/', {
      cache: true
    }).then(successCallback, errorCallback);
  };

  function successCallback(response) {
    if ($scope.arr== null) {
        $scope.arr= [];
      angular.merge($scope.arr, response.data);
    }
// но что делать, если нужно обновиться?
//пытался делать так:

  for (var i = 0; i < $scope.arr.length; i++) {
if ($scope.arr[i].name!=response.data[i].name) {
          $scope.arr[i].name= response.data[i].name
       }


}


get запрос делаю каждую секунду по таймеру, но несмотря на это, никогда не выполняется условие $scope.arr[i].name!=response.data[i].name потомучто почему то данные одинаковые, как будто у меня одна и та же ссылка. Хотя merge должен работать иначе.

Как обновить отдельный item массива без рефреша всего массива, с get запросом?

Третий день уже бьюсь, не получается. Очень помогли бы примером. Спасибо!
  • Вопрос задан
  • 306 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@godmodeon08 Автор вопроса
амбициозный разраб
Решил сам, нужно было angular.copy использовать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Если вы это в ng-repeat потом пихаете - то стоит trackBy поставить какой-то кастомный.
Ну и вообще 1. angular.merge deprecated, 2. вызывать его для мержа массивов - какая-то жесть
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы