AngularJS服务正确的方法如何编写函数条件

时间:2015-11-10 20:21:58

标签: javascript angularjs service

我有loginForm服务,它负责我的登录表单行为。例如,登录成功时有什么默认功能可以做,但是让我们说在不同的地方,我希望登录表单的行为不同。

我是这样写的,但这不是我想的正确方法。我应该以不同的方式编写它,例如使用Angulars(extend)函数吗?

angular.module('flapperNews').factory('loginForm', ['Auth', function(Auth) {

    function defaultSuccess() {
        alert('succes');
    }

    function defaultFail() {
        alert('fail');
    }

    var service = {
        fields: function() {
            return fields;
        },
        submitForm: function(loginInfo, afterSuccess, afterFail) {

            // Test if login ifnormation are right
            Auth.login(loginInfo).then(function(user) {

                // If new after success function is provided use it, if not use default
                (afterSuccess > 0) ? afterSuccess() : defaultSuccess();
            }, function(errorData) {
                // If new after success function is provided use it, if not use default
                (afterSuccess > 0) ? afterFail() : defaultFail();
            });
        },
    };

    return service;
}]);

1 个答案:

答案 0 :(得分:0)

我可以提出3个可能的解决方案,这些解决方案在cetain场景中都是有意义的:

  • 回调(你做了什么)
  • 在$ rootScope上广播事件并让控制器自行处理
  • 传递一个参数,决定逻辑的哪一部分应该被使用/运行并将逻辑放入服务中。

在登录方案中,id广播一个事件,让控制器处理该事件。