AngularJS BootstrapUI Typeahead with object & selection functionality

后端 未结 6 1297
有刺的猬
有刺的猬 2020-12-24 06:17

I\'m trying to implement a typeahead in Angular using http://angular-ui.github.io/bootstrap/, where the typeahead field displays full addresses but once clicked another fiel

6条回答
  •  甜味超标
    2020-12-24 07:02

    The typeahead directive from http://angular-ui.github.io/bootstrap/ is very, very flexible and there are many ways of achieving the desired functionality. I'm presenting 2 of them here.

    Firstly, the typeahead directive uses syntax very similar to the AngularJS select directive. This gives you full control over a displayed label and the data bound as model value. So what you could do is to simply display address as a label and bind postcode to the selPcode directly:

    
    

    The key here is the as part is in the typeahead expression: typeahead="state.postcode as state.address for state in states

    Also, please note that I'm using the typeahead-editable="false" attribute to bind model only when a selection is made. A working jsFiddle here: http://jsfiddle.net/jLupa/

    Another solution, if you really need to use a callback function is to use the typeahead-on-select attribute:

    
    

    It allows you to specify a callback when a match is selected. A working fiddle here: http://jsfiddle.net/t8BV2/

    As the last note: ng-change won't work here since it would react on any change in the input while you want to capture selection only. ng-click is not of much use either as it reacts on clicking on the input field and not the matches popup. On top of this it wouldn't react on selections made by using keayboard.

提交回复
热议问题