Estou usando o tipo angular ui-bootstrap adiantado e gostaria de usá-lo como uma forma de escolher muitas opções, então precisaria obter o valor selecionado quando o método selectMatch for iniciado, mas não consigo encontrar como fazer isso no meu 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">
Se eu observar o valor selecionado, tenho a alteração toda vez que uma tecla é pressionada ...
scope.$watch('selected', function(newValue, oldValue) {... });
Percebi que o método selectMatch é aquele que é chamado quando o usuário pressiona enter ou clica na lista, mas não sei como ter um retorno de chamada para isso ...
Obrigado !
fonte
state.id as state.name for state in states
. Nesse caso$item
éstate
, $ model isstate.id
, and$label
isstate.name
Edit: este método não é o melhor agora. É melhor usar o retorno de chamada onSelect conforme explicado na resposta acima.
Descobri como fazer o que queria. Eu vi que há um atributo editável do tipo antecipado e, se for definido como falso, o valor selecionado muda apenas quando um valor do modelo é selecionado. E assim o $ watch está funcionando bem para verificar quando um novo valor é selecionado.
fonte
A seguir deve estar o seu HTML
basta adicionar typeahead-on-select na tag de entrada com a função de retorno de chamada.
A seguir iria entrar no controlador
dentro de $ item você terá todo o objeto que você passou no array principal da lista de sugestões
fonte
tente o seguinte antes da validação
fonte