Angular提供程序接受需要依赖的函数

时间:2015-10-28 17:08:23

标签: javascript angularjs dependency-injection angular-providers

不知道给这个标题的标题,但基本上我有一个我自己创建的授权提供程序,需要在配置阶段配置一个requireLogin()函数,该函数将在以后运行。像这样......

app.provider('$auth', function(){

    var _requireLoginFn;


    return({
        setRequireLoginFunction: setRequireLoginFunction,
        $get: instantiateAuth
    });


    function setRequireLoginFunction(fn){
        _requireLoginFn = fn;
    }


    function instantiateAuth($http, $q) {

        return({
            requireLogin: requireLogin
        });

        function requireLogin() {
            return _requireLoginFn.apply(undefined, arguments);
        }

    }

});

这是提供者代码

activity_main.xml

旁注:我正在使用ng-annotate,所以不要使用DI的数组语法。

无论如何,正如你所看到的,在配置阶段存储的函数稍后将使用$ auth.requireLogin.then(...)等调用,需要访问angular-ui模态服务,但是当我稍后从提供者内部调用该函数时,显然DI事件没有发生,因为我所做的就是将$ modal放在我的函数的参数中,这不是魔术。我也不能将$ modal放在我的提供者的依赖项中,因为现在这样做太早了,我的提供者也不知道我传递的函数需要什么依赖项。

我觉得答案可能是:

A)在我传入的函数中使用注入器来访问$ modal服务或

B)在外部调用时以某种方式从提供程序内部运行函数,并以某种方式获取在运行时注入的所有提供的依赖项?

很抱歉,如果我无法轻易解释这一点。我试图制作一个JSfiddle,但不能轻易破解代码。

0 个答案:

没有答案