提前搜索功能

TheWebGuy

所以我正在使用Angular UI项目中的typeahead指令。我有一个调用工厂的函数(使用$ resource调用api)。第一个功能不起作用,但是第二个功能起作用。这里发生了什么不同?我以为它们会产生完全相同的结果,但是显然我错了:

    // this didn't work, it doesn't display a list of items in typeahead, no errors.
$scope.getLocation = function(val) {
    return LocationService.search({ term: val }, function (res) {
        return res.data.map(function (item) {
            return item;
        });
    });
};

// this worked
$scope.getLocation = function(val) {
    return LocationService.search({ term: val }).$promise.then(function (res){
        return res.data.map(function (item) {
            return item;
        });
    });
};
米奇·莉莉(Mitch Lillie)

你有$resource包裹LocationService吗?就像是:

function LocationService($resource) {
return {
    search : function(query){
        var locationResource = $resource('url/',
            {},
            {
                search : {
                    method: 'POST',
                    responseType : 'json'
                }
            });
        return locationResource.search({ q : query });
    }
};
}

如果是这样,在您的第一个示例中,您只是将一个回调作为第二个变量传递给LocationService,而在函数定义中未进行处理。返回的函数$resource可以将回调作为第二个参数,但是如果包装了它,则不可以。如果需要,可以将回调传递给服务本身,例如:

function LocationService($resource) {
return {
    search : function(query, cb){
        var locationResource = $resource('url/',
            {},
            {
                search : {
                    method: 'POST',
                    responseType : 'json'
                }
            });
        return locationResource.search({ q : query }, cb);
    }
};
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章