Po wyszukaniu przykładów tego, jak elementy ustawiania ostrości za pomocą kątów, zauważyłem, że większość z nich używa jakiejś zmiennej do obserwowania, a następnie ustawia ostrość, a większość z nich używa jednej zmiennej dla każdego pola, na które chce ustawić ostrość. W formie z wieloma polami oznacza to wiele różnych zmiennych.
Mając na uwadze jquery, ale chcąc to zrobić w sposób kątowy, stworzyłem rozwiązanie, w którym ustawiamy fokus w dowolnej funkcji za pomocą id elementu, więc ponieważ jestem bardzo nowy w angularach, chciałbym uzyskać opinie, jeśli ten sposób jest słuszny, mam problemy, cokolwiek, cokolwiek, co mogłoby mi pomóc w lepszym rozwiązaniu w kątowym.
Zasadniczo tworzę dyrektywę, która obserwuje wartość zakresu zdefiniowaną przez użytkownika za pomocą dyrektywy lub domyślny focusElement, a gdy ta wartość jest taka sama jak id elementu, ten element ustawia ostrość.
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();
})
}
};
});
Wkład, na którym z jakiegoś powodu musi się skupić, zrobi to w ten sposób
<input my-focus id="input1" type="text" />
Tutaj dowolny element do ustawienia ostrości:
<a href="" ng-click="clickButton()" >Set focus</a>
I przykładowa funkcja ustawiająca fokus:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Czy to dobre rozwiązanie w kątowym? Czy ma problemy, których z moim słabym doświadczeniem jeszcze nie widzę?