angularjs - Typeahead get multiple value beside the list name -
i found hard imagine way obtain set of value typeahead directive.
for example, in plunker,http://plnkr.co/edit/sj0kogipj4gnv3vcnkzj?p=preview
index.html
<!doctype html> <html ng-app="plunker"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.js"></script> <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.11.0.js"></script> <script src="example.js"></script> <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <script type="text/ng-template" id="customtemplate.html"> <a> <img ng-src="http://upload.wikimedia.org/wikipedia/commons/thumb/{{match.model.flag}}" width="16"> <span bind-html-unsafe="match.label | typeaheadhighlight:query"></span> </a> </script> <div class='container-fluid' ng-controller="typeaheadctrl"> <h4>static arrays</h4> <pre>model: {{selected | json}}</pre> <input type="text" ng-model="selected" typeahead="state state in states | filter:$viewvalue | limitto:8" class="form-control"> <h4>asynchronous results</h4> <pre>model: {{asyncselected | json}}</pre> <input type="text" ng-model="asyncselected" placeholder="locations loaded via $http" typeahead="address address in getlocation($viewvalue)" typeahead-loading="loadinglocations" class="form-control"> <i ng-show="loadinglocations" class="glyphicon glyphicon-refresh"></i> <h4>custom templates results</h4> <pre>model: {{customselected | json}}</pre> <input type="text" ng-model="customselected" placeholder="custom template" typeahead="state state.name state in stateswithflags | filter:{name:$viewvalue}" typeahead-template-url="customtemplate.html" class="form-control"> </div> </body> </html> example.js
angular.module('plunker', ['ui.bootstrap']); 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']; // function returning promise object can used load values asynchronously $scope.getlocation = function(val) { return $http.get('http://maps.googleapis.com/maps/api/geocode/json', { params: { address: val, sensor: false } }).then(function(res){ var addresses = []; angular.foreach(res.data.results, function(item){ addresses.push(item.formatted_address); }); return addresses; }); }; $scope.stateswithflags = [{'name':'alabama','flag':'5/5c/flag_of_alabama.svg/45px-flag_of_alabama.svg.png'},{'name':'alaska','flag':'e/e6/flag_of_alaska.svg/43px-flag_of_alaska.svg.png'},{'name':'arizona','flag':'9/9d/flag_of_arizona.svg/45px-flag_of_arizona.svg.png'},{'name':'arkansas','flag':'9/9d/flag_of_arkansas.svg/45px-flag_of_arkansas.svg.png'},{'name':'california','flag':'0/01/flag_of_california.svg/45px-flag_of_california.svg.png'},{'name':'colorado','flag':'4/46/flag_of_colorado.svg/45px-flag_of_colorado.svg.png'},{'name':'connecticut','flag':'9/96/flag_of_connecticut.svg/39px-flag_of_connecticut.svg.png'},{'name':'delaware','flag':'c/c6/flag_of_delaware.svg/45px-flag_of_delaware.svg.png'},{'name':'florida','flag':'f/f7/flag_of_florida.svg/45px-flag_of_florida.svg.png'},{'name':'georgia','flag':'5/54/flag_of_georgia_%28u.s._state%29.svg/46px-flag_of_georgia_%28u.s._state%29.svg.png'},{'name':'hawaii','flag':'e/ef/flag_of_hawaii.svg/46px-flag_of_hawaii.svg.png'},{'name':'idaho','flag':'a/a4/flag_of_idaho.svg/38px-flag_of_idaho.svg.png'},{'name':'illinois','flag':'0/01/flag_of_illinois.svg/46px-flag_of_illinois.svg.png'},{'name':'indiana','flag':'a/ac/flag_of_indiana.svg/45px-flag_of_indiana.svg.png'},{'name':'iowa','flag':'a/aa/flag_of_iowa.svg/44px-flag_of_iowa.svg.png'},{'name':'kansas','flag':'d/da/flag_of_kansas.svg/46px-flag_of_kansas.svg.png'},{'name':'kentucky','flag':'8/8d/flag_of_kentucky.svg/46px-flag_of_kentucky.svg.png'},{'name':'louisiana','flag':'e/e0/flag_of_louisiana.svg/46px-flag_of_louisiana.svg.png'},{'name':'maine','flag':'3/35/flag_of_maine.svg/45px-flag_of_maine.svg.png'},{'name':'maryland','flag':'a/a0/flag_of_maryland.svg/45px-flag_of_maryland.svg.png'},{'name':'massachusetts','flag':'f/f2/flag_of_massachusetts.svg/46px-flag_of_massachusetts.svg.png'},{'name':'michigan','flag':'b/b5/flag_of_michigan.svg/45px-flag_of_michigan.svg.png'},{'name':'minnesota','flag':'b/b9/flag_of_minnesota.svg/46px-flag_of_minnesota.svg.png'},{'name':'mississippi','flag':'4/42/flag_of_mississippi.svg/45px-flag_of_mississippi.svg.png'},{'name':'missouri','flag':'5/5a/flag_of_missouri.svg/46px-flag_of_missouri.svg.png'},{'name':'montana','flag':'c/cb/flag_of_montana.svg/45px-flag_of_montana.svg.png'},{'name':'nebraska','flag':'4/4d/flag_of_nebraska.svg/46px-flag_of_nebraska.svg.png'},{'name':'nevada','flag':'f/f1/flag_of_nevada.svg/45px-flag_of_nevada.svg.png'},{'name':'new hampshire','flag':'2/28/flag_of_new_hampshire.svg/45px-flag_of_new_hampshire.svg.png'},{'name':'new jersey','flag':'9/92/flag_of_new_jersey.svg/45px-flag_of_new_jersey.svg.png'},{'name':'new mexico','flag':'c/c3/flag_of_new_mexico.svg/45px-flag_of_new_mexico.svg.png'},{'name':'new york','flag':'1/1a/flag_of_new_york.svg/46px-flag_of_new_york.svg.png'},{'name':'north carolina','flag':'b/bb/flag_of_north_carolina.svg/45px-flag_of_north_carolina.svg.png'},{'name':'north dakota','flag':'e/ee/flag_of_north_dakota.svg/38px-flag_of_north_dakota.svg.png'},{'name':'ohio','flag':'4/4c/flag_of_ohio.svg/46px-flag_of_ohio.svg.png'},{'name':'oklahoma','flag':'6/6e/flag_of_oklahoma.svg/45px-flag_of_oklahoma.svg.png'},{'name':'oregon','flag':'b/b9/flag_of_oregon.svg/46px-flag_of_oregon.svg.png'},{'name':'pennsylvania','flag':'f/f7/flag_of_pennsylvania.svg/45px-flag_of_pennsylvania.svg.png'},{'name':'rhode island','flag':'f/f3/flag_of_rhode_island.svg/32px-flag_of_rhode_island.svg.png'},{'name':'south carolina','flag':'6/69/flag_of_south_carolina.svg/45px-flag_of_south_carolina.svg.png'},{'name':'south dakota','flag':'1/1a/flag_of_south_dakota.svg/46px-flag_of_south_dakota.svg.png'},{'name':'tennessee','flag':'9/9e/flag_of_tennessee.svg/46px-flag_of_tennessee.svg.png'},{'name':'texas','flag':'f/f7/flag_of_texas.svg/45px-flag_of_texas.svg.png'},{'name':'utah','flag':'f/f6/flag_of_utah.svg/45px-flag_of_utah.svg.png'},{'name':'vermont','flag':'4/49/flag_of_vermont.svg/46px-flag_of_vermont.svg.png'},{'name':'virginia','flag':'4/47/flag_of_virginia.svg/44px-flag_of_virginia.svg.png'},{'name':'washington','flag':'5/54/flag_of_washington.svg/46px-flag_of_washington.svg.png'},{'name':'west virginia','flag':'2/22/flag_of_west_virginia.svg/46px-flag_of_west_virginia.svg.png'},{'name':'wisconsin','flag':'2/22/flag_of_wisconsin.svg/45px-flag_of_wisconsin.svg.png'},{'name':'wyoming','flag':'b/bc/flag_of_wyoming.svg/43px-flag_of_wyoming.svg.png'}]; } when search , select, taking 1 value entry 1 taken. however, if want take, example, beside address, resident's name reserved future use or in form?
i tried passing value item.residentname, display list of address undefined follow each of address (pre-condition residentname populated correctly). or if pass .push(object), object object instead of var value only, wil show each list item [object, object].
==further clarification example in last step of getlocation(), want pass instead of item.formatted_address, want pass item.geometry while list generated still display formatted_address.
please let me know if makes sense.
thank
here working plunkr: http://plnkr.co/edit/hcijhfeydxhicl4lombb
the view modified follows:
typeahead="address address.formatted_address address in getlocation($viewvalue)" 'address' bound model. displayed 'formatted_address'
you can find more possibilities in doc: https://docs.angularjs.org/api/ng/directive/select @ ng-options syntax
the controller modified follows:
angular.foreach(res.data.results, function(item){ addresses.push({ formatted_address: item.formatted_address, geometry: item.geometry }); });
Comments
Post a Comment