В моем контроллере я установил переменную «данные» в значение по умолчанию. В моем исходном проекте я использую CouchCorner для извлечения данных из CouchDB и обновления данных.
В пределах раздумий я наблюдаю за переменными данными и соответствующим образом обновляю элемент. Тем не менее, я столкнулся с проблемой «$ digest уже в процессе», что приводит к тому, что редуктор не обновляется правильно. Я уже нашел много информации о проблеме $ digest, но я не мог найти ответа, который бы соответствовал моей проблеме.
Я создал следующий jsFiddle, который использует $ таймаут вместо фактического запроса CouchDB: http://jsfiddle.net/cwesM/4/
var App = angular.module('myApp', []);
function Ctrl($scope, $timeout) {
$scope.data="Initial";
$timeout(function(){
$scope.data="Updated"}, 1)
}
App.directive('chart', function(){
return{
restrict: 'E',
link: function(scope, elem, attrs){
scope.$watch(attrs.ngModel, function(v){
alert(v)
elem.html("Data="+v);
});
}
};
});
Скрипт изменяет начальное значение «данные» в «Обновление» после 1мс. Но директива не обновляется, хотя функция $ watch выполняется. Интересно, если я удалю предупреждение(), все будет работать так, как ожидалось.
Как я могу избежать столкновения $ digest?
Я не понимаю. JsFiddle, с которым вы связаны, похоже, работает точно так, как я ожидал. –
Пожалуйста, снова нажмите «запустить» в скрипаче. Иногда он работает впервые, но не повторен. Как-то проблема загрузки/выполнения. – avanc
Я запустил его дюжину раз, все с ожидаемыми результатами (Chrome). В каком браузере вы это делаете? –