在我的控制器上我有大量的服务调用,所以每次我得到一个响应我都在做相同的操作,所以我想知道是否有办法统一“成功“和”错误“每个服务调用的功能,以删除,重复代码,
另外,如果有办法应该放在哪里?
this.UpdateProfile = function (profile) {
profilePageDataService.UpdateProfile(profile)
.success(
function (data, status) {
alert('Yeah');
})
.error(
function (data, status) {
alert('Ko');
});
};
修改
所以,我想澄清一点,我只想拿出“成功与错误”,因为里面的代码是一样的,
this.UpdateProfileName = function (profile) {
profilePageDataService.UpdateProfileName(profile)
.success(
function (data, status) {
alert('Yeah');
})
.error(
function (data, status) {
alert('Ko');
});
};
答案 0 :(得分:0)
您可以向服务功能添加回调。
this.UpdateProfile = function (profile, callback) {
var cb = callback || angular.noop; // just a safer way. do nothing in you did not specify `callback` variable.
profilePageDataService.UpdateProfile(profile)
.success(
function (data, status) {
return cb(data);
})
.error(
function (data, status) {
return cb(data);
});
};
并获得回调:
var userProfile = {};
MyService.UpdateProfile(userProfile, function(response) {
console.log(response);
});
答案 1 :(得分:0)
如何在 $ rootScope 中移动UpdateProfile
功能:
angular.module('scopeExample', [])
.controller('RootController', ['$scope', '$rootScope', 'profilePageDataService', function($scope, $rootScope, profilePageDataService) {
$rootScope.UpdateProfile = function (profile) {
profilePageDataService.UpdateProfile(profile)
.success(
function (data, status) {
//Some operations here...
})
.error(
function (data, status) {
//.....
});
};
}])
.controller('ProfileController', ['$scope', function($scope) {
//UpdateProfile function moved from here to $rootScope
}]);
我认为上述内容可行(注意我还没有测试过),但上面的代码是在Angular's Scope Hierarchies示例之后实现的。
在这种情况下还有另一种替代方案,它涉及使用AngularUI Router。