【问题标题】:angular-bootstrap typeahead using $http使用 $http 的 angular-bootstrap 预输入
【发布时间】:2015-09-02 02:18:39
【问题描述】:

我尝试将 angular-bootstrap 的 typeahead 插件与 $http 服务一起使用。起初,我像这样使用 $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() 可以,但 success() 不正确。

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

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

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

$http 遗留的 promise 方法成功和错误已经 已弃用。请改用标准 then 方法。如果 $httpProvider.useLegacyPromiseExtensions 设置为 false 然后这些 方法会抛出 $http/legacy 错误。

值得检查以确保没有引发此错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2012-10-26
    相关资源
    最近更新 更多