Шукаючи приклади того, як встановлюють елементи фокусування з кутовими, я побачив, що більшість із них використовує якусь змінну для перегляду, а потім встановить фокус, і більшість з них використовує одну різну змінну для кожного поля, на яке вони хочуть встановити фокус. У формі з великою кількістю полів, що передбачає безліч різних змінних.
Маючи на увазі спосіб jquery, але бажаючи зробити це угловим способом, я прийняв рішення, що ми задаємо фокус на будь-якій функції за допомогою ідентифікатора елемента, тому, оскільки я є абсолютно новим у кутовому, я хотів би отримати деякі думки, якщо таким чином правильно, є проблеми, будь-що, все, що могло б допомогти мені зробити це кращим чином у кутку.
В основному я створюю директиву, яка переглядає значення області, визначеного користувачем з директивою, або за замовчуванням 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";
}
Це гарне рішення в кутовому? Чи є у нього проблеми, які зі своїм поганим досвідом я ще не бачу?