我遇到了我的代码问题,我无法理解它是否出错了.有趣的是,api调用的很好,但它没有进入success功能
orders.pay(ss($scope.ss, $scope.oo))
.success(function (data) {
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) {
return $http.post('v1/payment/authorize', payment)
.then(genericSuccess);
}
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);
});
Run Code Online (Sandbox Code Playgroud)
rrd*_*rrd 18
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);
});
}
Run Code Online (Sandbox Code Playgroud)
试试看,那是否更好?
Dan*_*ele 13
正如你在角度文档中看到的那样https://docs.angularjs.org/api/ng/service/$http
success并且error不再可用.如果您仍想使用.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);
});
}])
Run Code Online (Sandbox Code Playgroud)
但你真的应该采用新的角度api.
你会碰到的问题是事实,.success并且.error是一个包装,一个抽象的,只有$http自曝,不是核心的承诺目标.
问题是从返回的承诺$http扩展到具有这些额外的属性,但后续的承诺不是.您的第一个.then服务是返回一个没有.success方法的正常承诺.
这是它被弃用的原因之一,你应该使用.then和.catch.
所以这将有效:
$http.get().success().then();
但这不会:
$http.get().then().success();
但你应该真的这样做:
$http.get().then().then();
请看下面的小提琴,它将演示它的小提琴
希望有道理.
| 归档时间: |
|
| 查看次数: |
28292 次 |
| 最近记录: |