Javascript 如何在工厂内传递和修改$scope/context?
我有一个简单的角度工厂来访问API和许多不同的控制器。如果触发了Javascript 如何在工厂内传递和修改$scope/context?,javascript,angularjs,Javascript,Angularjs,我有一个简单的角度工厂来访问API和许多不同的控制器。如果触发了$http.error(),我想将错误数据传递给控制器,在控制器中触发了appBackend(在相应的模式中显示正确的错误),并在新调用开始时清除此错误: angularApp.factory('appBackend', function($http, APP_CONFIG, APP_ERROR_CODE) { // clear code, i.e. $scope.error = null; return function(
$http.error()
,我想将错误数据
传递给控制器,在控制器中触发了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不是函数。如何执行此操作?您需要将工厂注入正在使用的控制器中。您可以简单地从工厂
传递成功和错误,或者访问控制器
本身中的成功和错误,如下所示。将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,
})
}
}
})