Après avoir cherché des exemples de la façon dont les éléments de mise au point sont définis avec angulaire, j'ai vu que la plupart d'entre eux utilisent une variable pour surveiller la mise au point, et la plupart d'entre eux utilisent une variable différente pour chaque champ qu'ils souhaitent définir. Dans un formulaire, avec beaucoup de champs, cela implique beaucoup de variables différentes.
Avec jquery way à l'esprit, mais voulant le faire de manière angulaire, j'ai fait une solution selon laquelle nous nous concentrons sur n'importe quelle fonction en utilisant l'id de l'élément, donc, comme je suis très nouveau dans angular, j'aimerais avoir des opinions si cette façon est juste, avoir des problèmes, peu importe, tout ce qui pourrait m'aider à le faire de la meilleure façon en angulaire.
Fondamentalement, je crée une directive qui surveille une valeur de portée définie par l'utilisateur avec la directive, ou le focusElement de la valeur par défaut, et lorsque cette valeur est la même que l'ID de l'élément, cet élément se concentre lui-même.
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();
})
}
};
});
Une entrée qui a besoin de se concentrer pour une raison quelconque fera de cette façon
<input my-focus id="input1" type="text" />
Voici tout élément à définir:
<a href="" ng-click="clickButton()" >Set focus</a>
Et l'exemple de fonction qui définit le focus:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
Est-ce une bonne solution en angulaire? Y a-t-il des problèmes que je ne vois pas encore avec ma mauvaise expérience?