Javascript 使用$http的角度引导typeahead
我尝试将angular bootstrap的typeahead插件与$http服务结合使用。首先,我使用$http.success()如下:Javascript 使用$http的角度引导typeahead,javascript,angularjs,Javascript,Angularjs,我尝试将angular bootstrap的typeahead插件与$http服务结合使用。首先,我使用$http.success()如下: $scope.filterProvinces = function(val){ return service.provinceList({ pageSize : 10, queryKey : val }).success(function(data, status, headers, config){
$scope.filterProvinces = function(val){
return service.provinceList({
pageSize : 10,
queryKey : val
}).success(function(data, status, headers, config){
return data.data.list;
}
).error(function(data, status, headers, config){
alert("no result!");
return ;
});
}
$scope.filterProvinces = function(val){
return service.provinceList({
pageSize : 10,
queryKey : val
}).then(function(response){
return response.data.data.list;
});
}
但它不起作用,所以我更改了代码,如下所示:
$scope.filterProvinces = function(val){
return service.provinceList({
pageSize : 10,
queryKey : val
}).success(function(data, status, headers, config){
return data.data.list;
}
).error(function(data, status, headers, config){
alert("no result!");
return ;
});
}
$scope.filterProvinces = function(val){
return service.provinceList({
pageSize : 10,
queryKey : val
}).then(function(response){
return response.data.data.list;
});
}
它在工作,所以我很困惑。为什么then()可以,但success()不正确 如果您检查AngularJS,您会发现
.success()
实际上将函数本身作为参数,然后调用该参数,传入解构的响应对象,最终调用.then()
来解析承诺
由于缺乏明确性,这实际上已被弃用,而的文档建议使用.then()
$http legacy promise方法的成功和错误已被删除
不赞成。改用标准then方法。如果
$httpProvider.useLegacyPromiseExtensions设置为false,则这些
方法将抛出$http/legacy错误
值得检查以确保没有抛出此错误 typeahead指令可以与静态数组/集合或承诺一起使用<代码>成功和
错误
不是标准的承诺方法。看见