2014-09-23 4 views
1

Я пытаюсь использовать Angular-UI Bootstrap Typeahead для поиска имен с удаленного сервера.

Поле ввода ввода реализовано следующим образом.

<input type="text" ng-model="selectedName" typeahead="name for name in search($viewValue)" class="form-control"> 

И эквивалентный код контроллера выглядит следующим образом.

$scope.search = function (term) { 
       return $http({ 
        method: 'GET', 
        url: 'names/search.json', 
        params: { 
         q: term 
        } 
       }).then(function (response) { 
        var names = []; 
        for (var i = 0; i < response.data.length; i++) { 
         names.push(response.data[i]); 
        } 
        return names; 
       }); 
      }; 

В настоящее время он работает нормально, используя $http

Я пытаюсь использовать Restangular для сервера связи.

Я попытался изменить выше код контроллера следующим образом, но он не работает.

$scope.search = function(term) { 
       return Restangular.all('users').one('search').getList({q:term}).then(
        function(names) { 
         return names.plain(); 
        } 
       )  
      }; 

С выше реализации, ответ от сервера отлично, как ожидают, но [object Object] показан в выпадающем списке вместо имен.

Как я могу преобразовать выше $http запрос на использование Restangular?

+0

радиально-интерфейс Бутстрап машинописный ссылка не открывается. –

+0

@Prashant Исправлена ​​ссылка. Но директиве TypeAhead придется искать вручную. – TheKojuEffect

ответ

0

Расширенные обещания -

$ объект: Это возвращает ссылку на объект, который будет заполнен когда сервер отвечает значение. Это означает, что если вы вызываете getList , это будет пустой массив по умолчанию. После того как массив будет возвращен с сервера, это же свойство $ object будет заполнено результатами с сервера.

Restangular.all("filter").getList().$object 
+0

Это не работает. :( – TheKojuEffect

+0

Нет необходимости в .then() part ... и держать его просто ... это обещание ... не заставляйте функцию возвращать что-либо ... просто установите ее в переменную области видимости и используйте ее в ng-model. – Avik

+1

Настройка в ng-модели - это то, что я обычно делаю, но 'typeahead' зависит от обещаний, как в своем примере. – TheKojuEffect