У меня есть часы, которые запускают событие DOM:
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$input.trigger('focus');
}
});
Проблема в том, что у меня есть обработчик "focus", который выполняет scope.$apply
.
$input.bind('focus', function() {
scope.$apply(function() { controller.focused = true; });
});
Итак, когда мой $watch
запускается изнутри $digest
, он вызывает ошибку, потому что он пытается запустить еще один $digest
.
Обходной путь, который у меня есть, - поставить триггер в $timeout
.
scope.$watch(function() { return controller.selected; }, function(selected) {
if (selected) {
$timeout(function() { $input.trigger('focus'); });
}
});
Это работает... до сих пор. Это правильный способ справиться с этим? Я не уверен, что это поймает каждый случай и хотел бы узнать, есть ли одобренный angular способ откусить часть кода после дайджеста.
Спасибо!