Dopo aver cercato esempi di come impostare gli elementi di messa a fuoco con angolare, ho visto che la maggior parte di loro usa alcune variabili per guardare per poi impostare la messa a fuoco, e la maggior parte di loro usa una variabile diversa per ogni campo che vogliono impostare. In una forma, con molti campi, ciò implica molte variabili diverse.
Con il modo jquery in mente, ma volendo farlo in modo angolare, ho fatto una soluzione che mettiamo a fuoco in qualsiasi funzione usando l'id dell'elemento, quindi, poiché sono molto nuovo in angolare, mi piacerebbe avere alcune opinioni se in questo modo è giusto, avere problemi, qualunque cosa, qualsiasi cosa che possa aiutarmi a farlo nel modo migliore in angolare.
Fondamentalmente, creo una direttiva che controlla un valore di ambito definito dall'utente con la direttiva, o il focusElement di default, e quando quel valore è uguale all'id dell'elemento, quell'elemento imposta il focus stesso.
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();
})
}
};
});
Un input che deve essere focalizzato per qualche motivo, farà in questo modo
<input my-focus id="input1" type="text" />
Qui qualsiasi elemento per mettere a fuoco:
<a href="" ng-click="clickButton()" >Set focus</a>
E la funzione di esempio che mette a fuoco:
$scope.clickButton = function() {
$scope.focusElement = "input1";
}
È una buona soluzione in angolare? Ha problemi che con la mia scarsa esperienza non vedo ancora?