AngularJS uib-typeahead не обновляет список значений - PullRequest
0 голосов
/ 04 июня 2018

У меня есть следующая разметка uib-typeahead:

  <input type="text" class="form-control" id="field_location" ng-model="surveyData.location"
     placeholder="Search"
     uib-typeahead="location as location.name for location in newListLocations | filter:$viewValue:customSearch | orderBy:location.country.name | limitTo:200"
     typeahead-editable="false">

И я обновляю его вызовом REST, который прекрасно работает в серверной части, и вот как я использую его в контроллере (взято из этот вопрос ):

$scope.filterLocations = function(searchValue, viewValue) {
     var newListOfLocations = LocationTypeaheadFilter.queryWithTypeaheadSearchValue(viewValue).then(function (list){
     $scope.newListLocations = list.data;
     console.log($scope.newListLocations);
     return $scope.newListLocations;
     },
     function errorCallback(response) {
         alert('Error');
         throw response;
     });
       return newListOfLocations;
};

Эта функция вызывается с использованием этой оригинальной разметки:

$scope.customSearch = function(searchValue, viewValue){
               return $scope.filterLocations(searchValue, viewValue);}

Сначала я попытался поместить всю логику водин и тот же метод, но без разницы, список для typeahead всегда оказывается пустым, даже когда я регистрирую его на консоли в области .then, он показывает все значения, которые я ожидаю, что он будет удерживаться.

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

РЕДАКТИРОВАТЬ , чтобы добавить фабрику, гдеЯ определил сервис Angular:

.factory('LocationTypeaheadFilter', function ($http, DateUtils) {
        return {
            queryWithTypeaheadSearchValue: function(query){
                return $http.get("api/locationssearchTypeahead/"+query)
            }
        }});

1 Ответ

0 голосов
/ 05 июня 2018

Я заметил, что вы используете location as location.name, затем позже в том же выражении, которое вы используете orderBy:location.country.name.location.name правильный путь?

Вы имели в виду location as location.country.name?Если вы ошибетесь, это приведет к пустому списку.

Если бы вы могли добавить образец данных о местоположении к вашему вопросу, это помогло бы найти, что идет не так.

...