Angular JS - Automatiquement la mise au point d'entrée et de montrer typeahead déroulant - l'interface utilisateur.bootstrap.typeahead

Je suis en utilisant Angular JS - ui.bootstrap.typeahead:

Je tiens à cliquer sur un bouton et un champ de saisie et d'afficher automatiquement le typeahead suggestion de liste déroulante. J'ai une directive qui se concentre automatiquement le champ de saisie lorsque le bouton est cliqué. Comment puis-je montrer le menu déroulant automatiquement de sorte que l'utilisateur peut utiliser la flèche vers le bas, ou cliquez sur, de choisir rapidement un utilisateur?

J'ai créé un Plunker avec l'interface utilisateur-bootstrap JS fichier modifiable pour bricoler:

http://plnkr.co/edit/Z79LY0OYlwFc3wirjxol?p=preview

C'est mon script:

<!doctype html>
<html ng-app="plunker">
<head>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.js"></script>
<script src="ui-bootstrap-tpls-0.10.0.js"></script>
</head>
<body>
<script>
angular.module('plunker', ['ui.bootstrap'])
.directive('focusMe', function($timeout, $parse) {
return {
//scope: true,   //optionally create a child scope
link: function(scope, element, attrs) {
var model = $parse(attrs.focusMe);
scope.$watch(model, function(value) {
if(value === true) { 
$timeout(function() {
element[0].focus(); 
});
}
});
}
};
});
function TypeaheadCtrl($scope, $http) {
$scope.selected = undefined;
$scope.states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
$scope.opened = false;
$scope.open = function() {
$scope.opened = true;
}
$scope.close = function() {
$scope.opened = false;
}
}
</script>
<div class='container-fluid' ng-controller="TypeaheadCtrl">
<h4>How can I open the typeahead dropdown automatically when button is pressed?</h4>
<p>I have a directive that automatically focuses on the field but I can't seem to automatically show the typeahead. Even adding down arrow key click support would be great.
<br/><br/>
<button class="btn btn-default" ng-show="!opened" ng-click="open()">Open Input and show typeahead!</button>
<button class="btn btn-default" ng-show="opened" ng-click="close()">Close Input</button>
<br/><br/>
<input type="text"
focus-me="opened"
ng-show="opened"
ng-model="selected" 
typeahead="state for state in states | filter:$viewValue | limitTo:8" 
class="form-control">
<br/>
<pre ng-show="opened">Model: {{selected | json}}</pre>
</div>
</body>
</html>
  • c'est une demande de fonctionnalité demande à être une caractéristique standard... et la solution proposée était d'avoir typeahead-min-longueur="0" pour l'activer, pas en mesure de trouver le lien exact pour l'instant, mais il suffit de chercher angulaire problème d'interface utilisateur et vous seront pour la plupart l'obtenir.. lien
  • FWIW, je suis tombé sur cette question, parce que j'essayais de faire un focus-sur-salon sur une entrée en tant que bien, mais à l'intérieur d'un bootstrap de l'interface utilisateur déroulante au lieu de simplement la vanille ng-show -- Mon entrée me concentrer sur 50% du temps que j'ai cliqué sur le menu déroulant de la bascule parce que bootstrap-liste n'avais pas fini de rendre la liste déroulante. J'ai donc trouvé une solution à long-polling de jQuery .is(':visible") (non disponible dans angulaire.élément, de sorte que vous avez à ajouter jQuery). Je bifurquais votre plunker et ajouté le bout de code qui permet de travailler à 100% du temps: plnkr.co/modifier/CAIWksiNdQnVqkn8mEgW?p=preview
  • J'ai posté une réponse, here que vous pouvez trouver des accommodements.