Как установить начальное значение в текстовое поле с атрибутом typeahead?

Я использую typeahead в своем проекте angularjs.

У меня есть это значение, которое будет отображаться в текстовом поле с атрибутом 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="city" 
typeahead-input-formatter="inputFormatter($model)"
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"/>

Вот плункер.

Как я могу установить начальное значение в текстовое поле, где города имеют, например, id = 3.




Ответы (1)


Если вам нужно установить выбранное значение по умолчанию, вы можете присвоить значение модели в вашем случае $scope.city (как в HTML у вас есть <input type="text" ng-model="city" ..) , например:

$scope.selected = {id:1, address:'Berlin'};
$scope.cities = [{id:1, address:'Berlin'},
                              {id:2,address:'Bonn'},
               {id:3,address:'London'},
               {id:4,address:'Miami'}];
//assign model value
$scope.city =  $scope.cities[3]   
//or do like this - $scope.city =  $scope.selected;

Проверьте планк: http://plnkr.co/edit/zKkIbyGYetxQejyfBSnG?p=preview

Если он не упорядочен по идентификатору, вы все равно можете найти его по id (предположим, вы используете lodash, если нет, то можно сделать это с помощью Array.forEach):

var id_i_need = 42;
var defaultItem = _.find($scope.cities, function(item){
  return item.id == id_i_need;
})[0]
 $scope.city = defaultItem;
person shershen    schedule 10.05.2016