gleber1
@gleber1

Не работает $compile после запроса?

function getTemplate(conf) {

                var compileScope = $rootScope.$new();
                angular.extend(compileScope, conf);

                var element = $compile(angular.element(
                    '<div class="tooltip-chart">' +
                    '<p>{{from}} - {{to}}</p>' +
                    '<p ng-if="y">USD: <bold style="color: #000000">{{y}}</bold></p>' +
                    '<span ng-if="news">' +
                    '<hr>' +
                    '<p ng-repeat="item in news">{{item}}</p>' +
                    '<hr>' +
                    '<p>3 of {{length}}<a ui-sref="news">VIEW ALL</a></p>' +
                    '</span>' +
                    '</div>'
                ))(compileScope);

                compileScope.$apply();

                return element.html();
            }

Из лоокальных данных работает. По после запроса на then почему то не работает и кидает трейс на моменте compileScope.$apply();
В чем вообще подвох?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
По после запроса на then почему то не работает и кидает трейс на моменте compileScope.$apply();


Приведи трейс, я на 90% уверен что у тебя там ошибка вида $digest already in progress.

Это пожалуй самое гнилое место в ангуляре и я дико рад тому что они избавились от этого во втором. Перед запуском $digest цикла (то что вызывается у $rootScope когда вы делаете apply) надо бы проверить не запущен ли он. Сервис $http автоматически запускает $digest по завершению запроса, если что.

Самый простой способ обезапасить себя от подобного - использовать сервис $timeout, который является оберткой и сам хэндлит $digest цикл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы