我有一个简单的角度工厂来访问API和许多不同的控制器。如果$http.error()
被触发,我想将错误data
传递给控制器,其中appBackend
被触发(在相应的模态中显示正确的错误)并在新调用时清除此错误开始:
angularApp.factory('appBackend', function($http, APP_CONFIG, APP_ERROR_CODE) {
// clear code, i.e. $scope.error = null;
return function(model, method, data) {
return $http.post(APP_CONFIG.API_PATH + '/' + model + '/' + method, data).error(function (data) {
// pass code i.e. $scope.error = data;
};
});
尝试apply()
,但收到appBackend(...).apply is not a function
。我怎么能这样做?
答案 0 :(得分:0)
您需要在正在使用的控制器中注入工厂。您可以简单地从factory
传递成功和错误或访问controller本身中的>成功和错误,如下所示。将api调用绑定到函数将覆盖以前的$scope
变量。
angular.module('myApp', []).controller('checkController', function($scope, faceOfffactory) {
var registerdata = {
grant_type: 'password',
UserName: $scope.signupData.username,
Password: $scope.signupData.password,
Phone: $scope.signupData.phone,
Email: $scope.signupData.email,
};
$scope.signUp = function(){
faceofffactory.signUp(registerdata).success(function(data) {
console.log(data);
$scope.message = data.status;
$state.go('.',null,{reload:true});//to reinitialize your controller.
})
.error(function(data, status, headers, config) {
console.log("http error", data);
$scope.message = "failure";
});
}
})
.factory('faceofffactory', function($http, $sessionStorage, ) {
var urlBase = 'http://apple.com:7071';
var lastId;
return {
signUp: function(registerdata) {
return $http({
method: 'POST',
url: urlBase + '/api/Account/Register',
data: registerdata,
})
}
}
})