angular-bootstrap typeahead使用$ http

时间:2015-09-02 02:18:40

标签: javascript angularjs

我尝试使用带有$ http服务的angular-bootstrap的typeahead插件。首先,我使用$ http.success(),如下所示:

$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()没问题但成功()不对。

1 个答案:

答案 0 :(得分:3)

如果你检查AngularJS source,你会发现.success()实际上将一个函数本身作为一个参数,然后调用它,传入解构的响应对象,最终调用{ {1}}解决承诺。

由于缺乏明确性,实际上已弃用,$http的文档建议使用.then()

  

$ http遗留承诺方法成功与错误   弃用。请改用标准方法。如果   $ httpProvider.useLegacyPromiseExtensions设置为false然后这些   方法将抛出$ http / legacy错误。

值得检查以确保不会抛出此错误。