AngularJS $ дайджест уже в процессе
Я получаю сообщение об ошибке при загрузке данных в угловое выражение. Данные загружаются, но я получаю ошибку $digest, которая уже выполняется.
var dom = angular.element($compile(template)($scope));
$scope.$apply();
var html = $('<div>').append(dom).html();
Я дам вам небольшую часть моего шаблона здесь:
<b>Name: </b>{{model.project.description}}<br />
<b>Littera: </b>{{model.littera}}<br />
<b>Address: </b>{{model.address}}<br />
Теперь я попытался обернуть $scope.$ Apply() в оператор if, как показано ниже. Но я слышал, что это плохой способ сделать это. Думаю, это не имеет большого значения, так как это не сработало.
if (scope.$$phase) {
scope.$apply();
}
Устранены ошибки, но теперь привязка данных не работает. Теперь вывод - это выражения, а не фактические данные. Я также попытался поместить $scope.$ Apply() в функцию $timeout, но, опять же, теперь мы получаем только выражение, а не данные.
Этот код находится в директиве. Я дал вам только этот код, так как остальная часть кода в директиве здесь не имеет значения. Что мне нужно сделать, чтобы привязка данных работала, все еще используя $timeout?
Заранее спасибо.
РЕДАКТИРОВАТЬ: жизненно важной частью я забыл сказать, что я считаю, что ошибка для 2 выражений, которые являются пустыми. В отладчике Chrome они становятся неопределенными.
1 ответ
Рассматривали ли вы реализацию своей директивы в более совместимом виде вместо того, чтобы иметь дело с $ apply самостоятельно?
Ошибки такого рода обычно возникают, когда часть кода выполняется вне углового контекста, например, код jquery.
Я буду рекомендовать избегать jQuery настолько, насколько это возможно, чтобы написать вашу директиву. При необходимости рассмотрите возможность использования функции ссылки.