2014-10-24 2 views
0

У меня есть этот typahead с угловой планкой:Угловые нг-опция ведет себя странно,

<div class="form-group" ng-class="newGroupForm.placeReference.$invalid ? 'has-error' : ''"> 
    <label for="placeReference" class="col-lg-2 control-label">Group Location</label> 
    <div class="col-lg-10"> 
     <input type="text" name="placeReference" 
       ng-model="newGroup.reference" 
       ng-options="place.reference as place.name 
          for place in getPlaces($viewValue)" 
       bs-typeahead min-length="0" required > 
    </div> 
</div> 

getPlaces возвращает массив объектов, который выглядит следующим образом:

{ 
    reference: "ccj32213SIJD", 
    name: "some name", 
} 

Когда я печатаю я получаю правильные результаты , но когда я выбираю выигранный вариант, значение, которое я вижу в моем вводе, является ссылкой (вместо имени).

Может ли кто-нибудь указать мою ошибку?

suggestions reference instead of name

Вот код контроллера:

$scope.getPlaces = function(viewValue) { 
    var input = viewValue || $scope.currentPlace; 
    return googleService.placesAutocomplete(input).then(
     function(places) { 
      return places; 
     } 
    ); 
}; 
+0

добавить другие переменный диапазон и установите нг-модель к нему, что-то простое, как тест, никаких свойств и посмотреть, что он возвращает – alsco77

+0

Я добавил id (который держит то же самое, что и ссылка) - все тот же результат – vlio20

+0

я имел в виду просто сохранить его в строке, а не в объекте – alsco77

ответ

0

ng-options Если здесь ведет себя так же, как <select ng-options> (извините, я не знаком с bs-typeahead директивы), то вы должны изменить его :

<input ... 
    ng-model="selectedPlace" 
    ng-options="place as place.name for place in getPlaces($viewValue)"> 

Тогда вы можете использовать название в другом месте:

<div>{{selectedPlace.name}}</div> 

Это, вероятно, лучше, чтобы получить фактический place объект {name: "..", reference: "..."}, но если вам просто нужно имя, то вы можете сделать это:

<input ... 
     ng-model="selectedPlaceName" 
     ng-options="place.name as place.name for place in getPlaces($viewValue)"> 
+0

Теперь, когда я просто делаю ng-model = «выбранное место» и выбирая объект места. после выбора ввода очищается – vlio20

+0

Вам нужно будет создать плункер - нелегко понять, что происходит. –

+0

Я был бы рад создать его, но это сложно, потому что все зависимости – vlio20