Как обработать $ digest, вызванный $ http

0

Я долго пробовал проблему, в которой мне нужно обновить родительский объект из области действия. Мне нужно получить некоторые данные, используя $ http, и приспособить эти данные к свойству в исходном родительском Obj.

Однако после этого представление обновляется, но каким-то образом модель, привязанная к этому виду, становится неопределенной. Поскольку представление обновляется новыми данными, некоторые модели становятся неопределенными после этого.

Только теперь я узнал, что $ http запускает $ digest, поэтому я думаю, что это причина моей проблемы.

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

Просто для того, чтобы прояснить ситуацию, прежде чем я приложу обратный plnkr. вот что я имею в виду:

У меня есть obj $scope.Obj. Я связал поля ввода в шаблоне директивы с этим объектом, используя 2-стороннюю привязку, такую как

<input ng-model = Obj.something.something2[$index]/>

Теперь скажем, что я сделал вызов API и обновил my something2 в $ scope.Obj as:

$scope.Obj.something.something2 = APIResponse.something3

Значения от нового объекта something3 видны в пользовательском интерфейсе, но в бэкэнд после этого

$scope.Obj.something.something2[$index] 

становится неопределенным.

Pls предлагает возможные причины для этого...

  • 0
    Пожалуйста, предоставьте некоторый код вместе с лучшим объяснением того, какие models become undefined . Демо, которое воспроизводит вашу проблему, также поможет
  • 0
    Постараюсь предоставить демо-версию как можно скорее. Между тем, чтобы объяснить, у меня есть obj $ scope.Obj. Я связал поля ввода в шаблоне директивы с этим объектом, используя двухстороннее связывание, например, <input ng-model = Obj.something.something2[$index]/> Теперь скажите, что я сделал вызов API и обновил что-то2 в $ scope.Obj as: $scope.Obj.something.something2 = APIResponse.something3 Значения нового объекта something3 видны в пользовательском интерфейсе, но в $scope.Obj.something.something2[$index] после этого $scope.Obj.something.something2[$index] становится неопределенным. Просьба предложить возможные причины этого ... если это имеет смысл
Показать ещё 2 комментария
Теги:
http
digest

1 ответ

0

Другие модели становятся неопределенными, потому что вы заменяете объект. Вместо этого вы должны использовать angular.extend.

angular.extend($scope.Obj.something.something2, APIResponse.something3);

Для получения дополнительной информации см. Ссылку на AngularJS angular.extend API.

Ещё вопросы

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