我在angularjs项目中使用了typeahead。
我将此值显示在带有typeahead属性的文本框中:
$scope.cities = [{id:1,address:'Berlin'},
{id:2,address:'Bonn'},
{id:3,address:'London'},
{id:4,address:'Miami'}];
这是带有typeahead属性的输入文本框:
<input type="text" ng-model="selected" typeahead="state.abbreviation as state.name for state in states | filter:$viewValue | limitTo:8">
但是选择项目时显示的值的ID而不是地址的问题。
这是planker。
我希望地址显示在文本框和id值中以保存在selected
变量中。如何解决问题?
答案 0 :(得分:2)
试试这个(运行代码段):
angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('TypeaheadCtrl', function($scope, $http) {
$scope.cities = [{id:1, address:'Berlin'},
{id:2,address:'Bonn'},
{id:3,address:'London'},
{id:4,address:'Miami'}];
});
&#13;
<!doctype html>
<html ng-app="ui.bootstrap.demo">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-animate.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.2.js"></script>
<script src="example.js"></script>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<style>
.typeahead-demo .custom-popup-wrapper {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
background-color: #f9f9f9;
}
.typeahead-demo .custom-popup-wrapper > .message {
padding: 10px 20px;
border-bottom: 1px solid #ddd;
color: #868686;
}
.typeahead-demo .custom-popup-wrapper > .dropdown-menu {
position: static;
float: none;
display: block;
min-width: 160px;
background-color: transparent;
border: none;
border-radius: 0;
box-shadow: none;
}
</style>
<div class='container-fluid typeahead-demo' ng-controller="TypeaheadCtrl">
<h4>Custom templates for results</h4>
<pre> Id: {{city.id}}</pre>
<pre>Model: {{city | json}}</pre>
<input type="text"
ng-model="city"
placeholder="Custom template"
uib-typeahead="city as city.address for city in cities | filter:$viewValue"
class="form-control"
typeahead-show-hint="true"
typeahead-min-length="0"/>
</div>
</body>
</html>
&#13;