Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误成功不是Angularjs中的函数_Angularjs - Fatal编程技术网

错误成功不是Angularjs中的函数

错误成功不是Angularjs中的函数,angularjs,Angularjs,我的代码有问题,我不明白出了什么问题。。 有趣的是,api调用非常好,但它没有进入success函数 orders.pay(ss($scope.ss,$scope.oo)) .success(函数(数据){ 试试看,看是否更好?您遇到的问题是.success和.error是一个包装器,一个只有$http公开的抽象,而不是核心promise对象 问题是从$http返回的承诺被扩展为具有这些额外属性,但是后续承诺不是。您服务中的第一个。然后返回的是一个没有.success方法的正常承诺 这是它被弃用

我的代码有问题,我不明白出了什么问题。。 有趣的是,api调用非常好,但它没有进入
success
函数
orders.pay(ss($scope.ss,$scope.oo))
.success(函数(数据){


试试看,看是否更好?

您遇到的问题是
.success
.error
是一个包装器,一个只有
$http
公开的抽象,而不是核心promise对象

问题是从
$http
返回的承诺被扩展为具有这些额外属性,但是后续承诺不是。您服务中的第一个
。然后
返回的是一个没有
.success
方法的正常承诺

这是它被弃用的原因之一,您应该改用
.then
.catch

因此,这将起作用:

$http.get().success().then();

但这不会:

$http.get().then().success();

但是,你应该真正做到:

$http.get().then().then();

请看下面的小提琴,它将演示它


希望这是有意义的。

正如您在angular文档中看到的那样

成功
错误
不再可用。
如果仍要在代码中使用
.success
.error
,可以执行以下操作:

angular.module('services.orders', ['users.service'])
  .factory('orders', ['$http', 'user', '$q', function ($http, user, $q) {
    'use strict';

    function genericSuccess(res) {
      return res.data.data; // yes, really.
    }


    function pay(payment) {
      var successCallback, errorCallback;
      function successFn(callback) {
        if (typeof callback == 'function'){
          successCallback = callback;
        }

        return successErrorResponse;
      }

      function errorFn(callback) {
        if (typeof callback == 'function') {
          errorCallback = callback;
        }

        return successErrorResponse;
      }

      var successErrorResponse = {
        success: successFn,
        error: errorFn
      };


      $http.post('v1/payment/authorize', payment)
        .then(
          function (response) {
            if(successCallback) {
              successCallback(response)
            }
          },
          function (response) {
            if(errorCallback) {
              errorCallback(response)
            }
          });




      return successErrorResponse;


    }


    orders.pay(ss($scope.ss, $scope.oo))
      .success(function (data) {

        //It should called success either it should gone to error but it says
        //Error:orders.pay(...).success is not a function
        //can any one suggest how to solve it

        notify.message('Thank you!');
      }).error(function (data) {
      notify.message('Error: ' + data.data.message);
    });

  }])

但是你真的应该采用新的angular api。

orders
函数是什么样子的?如果可以的话,发布它。
。success
。error
不受欢迎,即使这不是问题的原因,你也应该避免使用它们。使用
。然后使用
。catch
。你好,Daniel可以您可以回答这个问题:我想知道除了简单地重命名这些函数之外,他们是否还有其他特定的原因来重命名这些函数。
function genericSuccess (res) {
  return res.data.data; // yes, really.
}

function pay (payment) {
  return $http.post('v1/payment/authorize', payment).then(function(success) {
    return genericSuccess(success);
  });
}
angular.module('services.orders', ['users.service'])
  .factory('orders', ['$http', 'user', '$q', function ($http, user, $q) {
    'use strict';

    function genericSuccess(res) {
      return res.data.data; // yes, really.
    }


    function pay(payment) {
      var successCallback, errorCallback;
      function successFn(callback) {
        if (typeof callback == 'function'){
          successCallback = callback;
        }

        return successErrorResponse;
      }

      function errorFn(callback) {
        if (typeof callback == 'function') {
          errorCallback = callback;
        }

        return successErrorResponse;
      }

      var successErrorResponse = {
        success: successFn,
        error: errorFn
      };


      $http.post('v1/payment/authorize', payment)
        .then(
          function (response) {
            if(successCallback) {
              successCallback(response)
            }
          },
          function (response) {
            if(errorCallback) {
              errorCallback(response)
            }
          });




      return successErrorResponse;


    }


    orders.pay(ss($scope.ss, $scope.oo))
      .success(function (data) {

        //It should called success either it should gone to error but it says
        //Error:orders.pay(...).success is not a function
        //can any one suggest how to solve it

        notify.message('Thank you!');
      }).error(function (data) {
      notify.message('Error: ' + data.data.message);
    });

  }])