Focus simple ne fonctionne pas dans Angulaire
$scope.searchFocus = function() {
$('.fedsearch-box').focus();
};
3 Réponses :
Vous pouvez écrire une directive à cet effet comme;
<input type="text" data-ng-model="model.fedSearchTerm"
placeholder="New Search" required focus />
Voici une implémentation plus robuste qui fonctionne très bien:
myApp.directive('focusMe', function () {
return {
link: function(scope, element, attrs) {
scope.$watch(attrs.focusMe, function(value) {
if(value === true) {
element[0].focus();
element[0].select();
}
});
}
};
});
<input type="text" ng-model="stuff.name" focus-me="true" />
Cela fonctionne très bien. Pourriez-vous expliquer pourquoi la montre $ est nécessaire pour envelopper la mise au point et sélectionner? J'ai essayé de supprimer $ Watch et bien sûr cela ne fonctionne pas sans cela.
J'ai rencontré le même problème. Résolu en joignant la commande de mise au point à l'intérieur $ Timeout. Assurez-vous de passer le paramètre $ Timeout dans la fonction .Controller.
$timeout(function() { $('.fedsearch-box').focus(); });
Stackoverflow.com/questions/14833326/... < / a> Regardez la réponse de Mark ici.