$ http.get(...)。成功不是角度js的函数

时间:2017-11-08 08:49:36

标签: javascript angularjs frontend

在角度js版本1.2.9“成功”功能有效,但在1.6中它使用“then”功能,因此如何使用

转换下面的代码
artistControllers.controller('DetailsController', ['$scope', '$http','$routeParams', function($scope, $http, $routeParams) {
  $http.get('js/data.json').success(function(data) {
    $scope.artists = data;
    $scope.whichItem = $routeParams.itemId;
  });
}]);

5 个答案:

答案 0 :(得分:3)

对于1.3以上的版本,不推荐使用.success。你应该使用.then

artistControllers.controller('DetailsController', ['$scope', '$http','$routeParams', function($scope, $http, $routeParams) {
  $http.get('js/data.json').then(function(data) {
    $scope.artists = data;
    $scope.whichItem = $routeParams.itemId;
  });
}]);

答案 1 :(得分:1)

.success语法在Angular v1.4.3之前是正确的。

对于Angular v.1.6之前的版本,您必须使用then方法。 then()方法有两个参数:一个success和一个error回调,它将使用响应对象调用。

使用then()方法,将callback函数附加到返回的promise

这样的事情:

app.controller('MainCtrl', function ($scope, $http){
   $http({
      method: 'GET',
      url: 'api/url-api'
   }).then(function (success){

   },function (error){

   });
}

参见参考here.

Shortcut方法也可用。

$http.get('api/url-api').then(successCallback, errorCallback);

function successCallback(response){
    //success code
}
function errorCallback(error){
    //error code
}

2之间的主要区别在于.then()调用返回promise(使用callback返回的值解析),而.success()是更传统的注册方式callbacks并且不会返回promise

<强>解决方案

artistControllers.controller('DetailsController', ['$scope', 
  '$http','$routeParams', function($scope, $http, $routeParams) {
    $http.get('js/data.json').then(function(data) {
      $scope.artists = data;
      $scope.whichItem = $routeParams.itemId;
    });
}]);

答案 2 :(得分:0)

$ http的结构已经改变。使用.then代替.success

$http.get('js/data.json').then(function(data){
   console.log(data);
}).catch(function(error)){
console.log(error)
});

答案 3 :(得分:0)

试试这个......

$http.get("http://localhost/angulartest/index.php/Items/getItems")
    .then(function (response) {

        console.log(response.data);
        $scope.records = response.data;
    });

答案 4 :(得分:0)

做三件事

  1. 将success()替换为then()
  2. 用catch()
  3. 替换error()
  4. 考虑response.data而不是响应