После поиска примеров того, как установить элементы фокусировки с помощью angular, я увидел, что большинство из них используют некоторую переменную, чтобы наблюдать за тем, чтобы установить фокус, и большинство из них используют одну другую переменную для каждого поля, для которого они хотят установить фокус. В форме, с большим количеством полей, что подразумевается во множестве разных переменных.
С учетом jquery, но, желая сделать это с помощью angular, я сделал решение, которое мы задали фокус в любой функции, используя идентификатор элемента, поэтому, поскольку я очень новичок в angular, я ' Я хотел бы получить некоторые мнения, если это так, проблемы, что угодно, что-нибудь, что могло бы помочь мне сделать это лучше в angular.
В принципе, я создаю директиву, которая наблюдает за значением области, определяемой пользователем с директивой или по умолчанию focusElement, и когда это значение совпадает с идентификатором элемента, этот элемент сам устанавливает фокус.
angular.module('appnamehere')
.directive('myFocus', function () {
return {
restrict: 'A',
link: function postLink(scope, element, attrs) {
if (attrs.myFocus == "") {
attrs.myFocus = "focusElement";
}
scope.$watch(attrs.myFocus, function(value) {
if(value == attrs.id) {
element[0].focus();
}
});
element.on("blur", function() {
scope[attrs.myFocus] = "";
scope.$apply();
})
}
};
});
Ввод, который по какой-то причине должен получить фокус, сделает это.
<input my-focus id="input1" type="text" />
Здесь любой элемент для установки фокуса:
<a href="" ng-click="clickButton()" >Set focus</a>
И примерная функция, которая устанавливает фокус:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Это хорошее решение в angular? Есть ли проблемы, которые с моим бедным опытом я еще не вижу?