Angular 1.x Почему не отрисовывается модель, полученная через XMLHttpRequest()?

Всем привет. Столкнулся с такой особенностью; при использовании XMLHttpRequest() данные из функции onload не попадают во вьюху, до тех пор, пока на странице не будет выполнено какое либо событие.

Пример 1.
после обращения к rest-сервису через стандартный модуль $http модель заполняется и сразу же отрисовывается на странице

Пример 2.
То же самое, но через XMLHttpRequest(). Если открыть консоль, то будет видно, что ответ от сервиса пришёл, но на странице ничего не отрисовалось. При наведении мышки на блок с tooltip, происходит событие (всплывает сообщение) и модель отрисовывается на вьюхе.

Надеюсь, кто нибудь знает ка кэто победить? =)
  • Вопрос задан
  • 120 просмотров
Решения вопроса 3
Ptolemy_master
@Ptolemy_master
Попробуйте так?
Ответ написан
Комментировать
@levchak0910
answer.correct ? press({correct: true}) : next()
После обновления данных $scope.$apply()
xhr.onload = function () {
  $scope.some_var = some_data_from_http;
  $scope.$apply()
};
Ответ написан
Комментировать
mazhekin
@mazhekin
Frontend, Backend Web Developer
Все директивы и сервисы ангуляра из коробки (например ng-click, сервисы $http, $timeout и другие) автоматически делают вызов $scope.$apply(). А если используются неангулярные методы типа вашего примера или события навешены голым яваскриптом или другой библиотекой(типа jQuery), то надо делать вызов $scope.$apply() самому, чтобы дать знать ангуляру, что данные изменились, и ему нужно обновить вьюхи, вызвать watch-функции и т.п. Почему это нужно делать написано здесь www.codehint.ru/articles/2014-08-30_angular_apply_...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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