Estoy usando el tipo angular ui-bootstrap typeahead y me gustaría usarlo como una forma de elegir muchas opciones, por lo que necesitaría obtener el valor seleccionado cuando se inicie el método selectMatch pero no puedo encontrar cómo hacerlo que en mi controlador
<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 miro el valor seleccionado, obtengo el cambio cada vez que se presiona una tecla ...
scope.$watch('selected', function(newValue, oldValue) {... });
Entendí que el método selectMatch es el que se llama cuando el usuario presiona enter o hace clic en la lista, pero no sé cómo tener una devolución de llamada sobre eso ...
Gracias !
fuente
state.id as state.name for state in states
. En ese caso$item
esstate
, $ modelo esstate.id
, y$label
esstate.name
Editar: este método no es el mejor ahora. Es mejor usar la devolución de llamada onSelect como se explica en la respuesta anterior a esta.
Descubrí cómo hacer lo que quería. Vi que hay un atributo que se puede editar con anticipación y, si se establece en falso, el valor seleccionado cambia solo cuando se selecciona un valor del modelo. Y entonces el $ watch está funcionando bien para verificar cuando se selecciona un nuevo valor.
fuente
Lo siguiente debe ser su HTML
simplemente agregue typeahead-on-select en la etiqueta de entrada con la función de devolución de llamada.
Lo siguiente iría dentro del controlador
dentro de $ item obtendrá el objeto completo que ha pasado en la matriz principal de la lista de sugerencias
fuente
intente lo siguiente antes de la validación
fuente