2015-10-07 5 views
0

У меня есть тип, который работает нормально, но я хочу добавить текст в список результатов, если текст не соответствует существующим словам, и я хочу, чтобы этот параметр отображался немедленно ,AngularJS typeahead Добавить запись в список результатов

Это хорошо работает здесь: http://plnkr.co/edit/Gy37Qo6DDusou2GaWMWv?p=preview

Однако, в том случае, когда асинхронный занимает некоторое время, чтобы вернуть список результатов пуст во время ожидания. Я хотел бы запустить эту линию,

script.js: 15: addresses.push({formatted_address: val+" (new)", geometry: "custom"});

перед асинхронными возвращениями запроса.

Чтобы продемонстрировать, как это не работает, я меняю адрес в запросе «http://maps.googleapis.com/maps/api/geocode/json», на что-то недействительное. В этом случае typeahead ничего не покажет, хотя я бы хотел, чтобы текст был написан как предложение.

Надеюсь, это было понятно!

ответ

0

Вы можете решить эту проблему, поставив переменную addresses на $scope, а затем прочитав ее в виде head, а не в методе getLocation. Вам нужно будет обновить это при внесении изменений во вход, поэтому добавьте на вход атрибут ng-change и вызовите свой метод getLocation, а в обратном вызове запроса ajax просто добавьте результаты в массив адресов.

<input 
    id="input" 
    type="text" 
    ng-model="asyncSelected" 
    ng-change="getLocation()" 
    placeholder="Locations loaded via $http" 
    typeahead="address as address.formatted_address for address in addresses" 
    typeahead-loading="loadingLocations" 
    class="form-control"> 

(Примечание: ngChange имеет некоторые проблемы в решении этого, поэтому я рекомендую вам создать пользовательскую директиву, которая несколько модифицированное поведение). См. Здесь рудиментарное решение: http://plnkr.co/edit/dfb6PMLpFj6euFye4C8z?p=preview

+0

Спасибо, но это не работает. Раньше я пытался что-то подобное, но в итоге с той же проблемой. Как вы можете видеть в вашем примере, typeahead получает по одному символу. Когда я пишу «a», я получаю пустой результат, когда пишу «ab», я получаю результат для «a» и т. Д. – Kristian

Смежные вопросы