3

Ich benutze typeahead in meinem angularjs Projekt.Wie wird der Anfangswert für das Textfeld mit typeahead Attribut geschätzt?

ich diesen Wert hava mit typeahead Attribute in Textfeld angezeigt werden:

$scope.cities = [{id:1,address:'Berlin'}, 
        {id:2,address:'Bonn'}, 
        {id:3,address:'London'}, 
        {id:4,address:'Miami'}]; 

Und hier ist Texteingabefeld mit typeahead Attribute:

<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"/> 

Hier ist plunker.

Wie kann ich den Anfangswert für das Textfeld festlegen, in dem Städte beispielsweise id = 3 haben.

Antwort

3

Wenn Sie den Standard gewählten Wert festlegen müssen, dann können Sie einen Wert an das Modell in Ihrem Fall zuweisen es ist $scope.city (wie in HTML Sie <input type="text" ng-model="city" .. haben), etwa so:

$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; 

prüfen zupfen : http://plnkr.co/edit/zKkIbyGYetxQejyfBSnG?p=preview

wenn es nicht von id bestellt ist, dann kann man es immer noch finden, indem id (vorausgesetzt, Sie verwenden lodash, wenn nicht, können Sie es tun mit Array.forEach):

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

aber es funktioniert nur, wenn Städte von ID Ord. – Michael

+0

Sie können es immer finden, überprüfen Sie die aktualisierte Antwort – shershen