Nachdem ich nach Beispielen gesucht hatte, wie Fokuselemente mit Winkel eingestellt werden, stellte ich fest, dass die meisten von ihnen eine Variable verwenden, um auf den Fokus zu achten, und die meisten verwenden eine andere Variable für jedes Feld, für das sie den Fokus setzen möchten. In einer Form mit vielen Feldern impliziert dies viele verschiedene Variablen.
Mit Blick auf jquery, aber um dies auf eckige Weise zu tun, habe ich eine Lösung gefunden, bei der wir den Fokus in jeder Funktion unter Verwendung der Element-ID setzen. Da ich sehr neu in eckig bin, würde ich gerne einige Meinungen einholen, wenn Dieser Weg ist richtig, habe Probleme, was auch immer, alles, was mir helfen könnte, dies besser im Winkel zu tun.
Grundsätzlich erstelle ich eine Direktive, die einen vom Benutzer mit der Direktive definierten Bereichswert oder das focusElement des Standardwerts überwacht. Wenn dieser Wert mit der ID des Elements übereinstimmt, setzt dieses Element den Fokus selbst.
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();
})
}
};
});
Eine Eingabe, die aus irgendeinem Grund fokussiert werden muss, wird auf diese Weise ausgeführt
<input my-focus id="input1" type="text" />
Hier jedes Element, um den Fokus zu setzen:
<a href="" ng-click="clickButton()" >Set focus</a>
Und die Beispielfunktion, die den Fokus setzt:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Ist das eine gute Lösung im Winkel? Hat es Probleme, die ich aufgrund meiner schlechten Erfahrung noch nicht sehe?