管理服务的成功和错误响应

时间:2015-02-19 08:21:39

标签: javascript angularjs angular-services

在我的控制器上我有大量的服务调用,所以每次我得到一个响应我都在做相同的操作,所以我想知道是否有办法统一“成功“和”错误“每个服务调用的功能,以删除,重复代码,

另外,如果有办法应该放在哪里?

 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'); 
                        });
     };

2 个答案:

答案 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