将$ http请求转换为Restangular

时间:2014-09-23 06:52:50

标签: angularjs http restangular

我尝试使用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

1 个答案:

答案 0 :(得分:0)

增强承诺 -

  

$ object:返回对将要填充的对象的引用   一旦服务器响应一个值。这意味着如果你调用getList   默认情况下,这将是一个空数组。一旦返回数组   从服务器,这个相同的$ object属性将被填充   来自服务器的结果。

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