AngularJS - Mise au point d'un élément d'entrée lorsqu'une case est cochée
Est-il une manière plus propre de déléguer le focus à un élément quand une case est cliqué. Voici la sale version que j'ai piraté:
HTML
<div ng-controller="MyCtrl">
<input type="checkbox" ng-change="toggled()">
<input id="name">
</div>
JavaScript
var myApp = angular.module('myApp',[]);
function MyCtrl($scope, $timeout) {
$scope.value = "Something";
$scope.toggled = function() {
console.debug('toggled');
$timeout(function() {
$('#name').focus();
}, 100);
}
}
JSFiddle: http://jsfiddle.net/U4jvE/8/
source d'informationauteur kolrie
Vous devez vous connecter pour publier un commentaire.
comment à ce sujet ? plunker
@asgoth et @Mark Rajcok sont corrects. Nous devrions utiliser la directive. J'ai été paresseux.
Ici est la directive version. plunker Je pense qu'une bonne raison de le faire que la directive est que vous pouvez réutiliser cette chose.
donc dans votre code html, vous pouvez simplement assigner différentes des modaux différents ensembles
Une autre directive de mise en œuvre (qui ne nécessite pas de jQuery), et de l'emprunt de certains de @maxisam code:
HTML:
Violon.
Depuis cette directive ne crée pas un isolat portée (ou un enfant), de la directive suppose que le champ d'application a un
focusCheckbox
bien défini.Si vous voulez le rendre plus intéressant, et de soutien pour toute expression à évaluer (pas seulement les variables), vous pouvez le faire:
Et votre code html, peut être un peu plus découplé, comme ça:
D'une façon plus propre est d'utiliser une directive pour effectuer la bascule:
Votre html serait qqch comme: