Javascript 角度UI typeahead结果不显示在下拉列表中
我使用Angular ui typeahead组件来点击一个自动完成API,我正在解析返回到一个名为Javascript 角度UI typeahead结果不显示在下拉列表中,javascript,angularjs,angular-ui-bootstrap,angular-ui-typeahead,Javascript,Angularjs,Angular Ui Bootstrap,Angular Ui Typeahead,我使用Angular ui typeahead组件来点击一个自动完成API,我正在解析返回到一个名为resp的数组中的数据。但是,我没有看到数据被传递到UI中的“自动完成”下拉列表。顺便说一句,控制器有一个正确显示数据的console.log,因此我知道它从api调用返回 以下是我的控制器功能: $scope.getLocationForSearch=函数(locationString){ $scope.locationString=locationString; var url='/autoC
resp
的数组中的数据。但是,我没有看到数据被传递到UI中的“自动完成”下拉列表。顺便说一句,控制器有一个正确显示数据的console.log,因此我知道它从api调用返回
以下是我的控制器功能:
$scope.getLocationForSearch=函数(locationString){
$scope.locationString=locationString;
var url='/autoComplete/'+locationString;
$http({
方法:“GET”,
url:url
}).then(函数成功回调(响应){
console.clear();
var resp=response.data.RESULTS.map(函数(项){
console.log(item.name);
返回item.name;
});
返回响应;
},函数errorCallback(响应){
控制台日志(响应);
});
}
在我的HTML中:
未找到任何结果
这里有几篇关于这个问题的帖子,但没有一篇真正回答我的具体问题。非常感谢您的帮助。您的函数
getLocationForSearch()
不好:它必须向uib typeahead
返回承诺。
因此,工作代码是:
$scope.getLocationForSearch = function(locationString) {
$scope.locationString = locationString;
var url = '/autoComplete/' + locationString ;
return $http({
method: 'GET',
url: url
}).then(function successCallback(response) {
console.clear();
return response.data.results.map(function(item) {
console.log(item.name);
return item.name;
});
}, function errorCallback(response) {
console.log(response);
});
}
以下是Plunker的一个工作示例:
正如@beaver所说,您需要返回一个$promise。我最初有相同的代码,但确实不确定这与我的代码有什么不同。我刚刚添加了
resp
变量来调试返回的内容。我把它改回去了,但没用。另外,“results”应该是大写的……我知道这不会有太大变化,但json对象就是这样返回的。控制台中没有错误。您必须返回$http()函数的输出,这是一个承诺,请参阅。相反,您尝试返回resp,这是已解决承诺中的响应。那是另一回事。哦…返回$http({
)。我现在明白了。谢谢你的帮助!谢谢你的帮助。这是一个真实且经过测试的解决方案。