J'utilise la tête de frappe angulaire ui-bootstrap et je voudrais l'utiliser comme moyen de choisir de nombreux choix, donc j'aurais besoin d'obtenir la valeur sélectionnée lorsque la méthode selectMatch est lancée mais je ne trouve pas comment faire que dans mon contrôleur
<div class='container-fluid' ng-controller="TypeaheadCtrl">
<pre>Model: {{selected| json}}</pre>
<input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue">
Si je regarde la valeur sélectionnée, je reçois le changement chaque fois qu'une touche est enfoncée ...
scope.$watch('selected', function(newValue, oldValue) {... });
J'ai compris que la méthode selectMatch est celle qui est appelée lorsque l'utilisateur appuie sur Entrée ou clique sur la liste mais je ne sais pas comment avoir un rappel à ce sujet ...
Merci !
la source
state.id as state.name for state in states
. Dans ce cas$item
eststate
, $ modèlestate.id
, et$label
eststate.name
Edit: cette méthode n'est pas la meilleure actuellement. Il est préférable d'utiliser le rappel onSelect comme expliqué dans la réponse ci-dessus.
J'ai trouvé comment faire ce que je voulais. J'ai vu qu'il existe un attribut typeahead-editable et s'il est défini sur false, la valeur sélectionnée ne change que lorsqu'une valeur du modèle est sélectionnée. Et donc la $ watch fonctionne bien pour vérifier quand une nouvelle valeur est sélectionnée.
la source
Le code suivant devrait être votre code HTML
ajoutez simplement tête sur sélection dans la balise d'entrée avec la fonction de rappel.
La suite irait à l'intérieur du contrôleur
dans $ item, vous obtiendrez tout l'objet que vous avez passé dans le tableau principal de la liste de suggestions
la source
essayez ce qui suit avant la validation
la source