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