Я разрабатывал модуль, в котором мне нужно было создать ввод текста вручную (при вводе или нажатии кнопки) и автофокусироваться на этом вводе сразу после его добавления в список. Пока функция работает, но когда я открываю журнал консоли, появляется ошибка $digest already in progress
. Какой-то странный, но если я удалю некоторые $ eval или $ apply, код не будет работать.Автофокусировка на последнем элементе ввода
Вот мой plnk демо для справки: Demo
function keyEnter($document) {
return {
restrict: "A",
scope: false,
link: function(scope, ele, attrs) {
ele.bind("keydown keypress", function(event) {
if (event.which === 13) {
scope.$apply(function() {
scope.$eval(attrs.keyEnter);
});
event.preventDefault();
}
});
}
}
}
function customAutofocus() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.$watch(function() {
return scope.$eval(attrs.customAutofocus);
}, function(newValue) {
if (newValue === true) {
element[0].focus();
}
});
}
};
}
Я следовал автофокусировку от этого thread, он не показывает какую-либо ошибку, даже если я применил ту же логику. Единственное различие заключается в том, что я использую угловой 1.3, а его значение равно 1.2
Что мне делать, чтобы улучшить код, чтобы избежать ошибки $ digest? Любая помощь действительно ценится, спасибо заранее
ничего себе, не знал, что это было легко ... большое вам спасибо –