Angular $ http成功弃用修订版

时间:2018-02-17 08:02:09

标签: javascript angularjs node.js

我正在阅读一本关于使用MEAN堆栈创建应用程序的书。我已经完全遵循了代码,但是我收到了一个错误,因为该书在删除$ http成功方法之前使用了旧版本的Angular。我想继续学习本书,但是在编辑代码时遇到了麻烦,无法使用新的.then版本的$ http。我目前有

 var locationListCtrl = function ($scope, loc8rData) {
  $scope.message = "Searching for nearby places";
   loc8rData
     .success(function(data) {
       $scope.message - data.length > 0 ? "" : "No locations found";
      $scope.data = { locations: data };
     })
     .error(function (e) {
      $scope.message = "Sorry, Something's gone wrong";
   });
};

 var loc8rData = function ($http) {
  return $http.get('/api/locations?lng=-0.79&lat=51.3&maxDistance=20');
 };

我查看了这个网站并发现我需要将此更改为使用$ http的新方法

$http(...)
  .then(function onSuccess(response) {
   // Handle success
   var data = response.data;
   ...
 }).catch(function onError(response) {
   // Handle error
   var data = response.data;
   ...
 });

我是一个新手,如果这很明显,我很抱歉,但我想知道如何准确修改代码,以便继续阅读本教程。特别是我不明白...在$ http(...)谢谢

1 个答案:

答案 0 :(得分:1)

看起来省略号只是占位符(即“在这里实现代码......”),不用担心。无论如何,.then()会在数据的Promise结算时被调用。

$http.get('https://www.google.com')
    .then(function(response) {
        console.log('Got response: ', response);
    })
    .catch(function(error) {
        console.log('Got an error: ', error);
    });

具体来说,在您的代码段中:

var locationListCtrl = function ($scope, loc8rData) {
  $scope.message = "Searching for nearby places";
  return loc8rData
    .then(function(data) {
      $scope.message = data.length > 0 ? "" : "No locations found";
      $scope.data = { locations: data };
    })
    .catch(function(e) {
      $scope.message = "Sorry, Something's gone wrong";
    });
};

var loc8rData = function ($http) {
  return $http.get('/api/locations?lng=-0.79&lat=51.3&maxDistance=20');
};