0

これにどのタイトルを付けるかはわかりませんでしたが、基本的には、後で実行される requireLogin() 関数を持つように構成フェーズで構成する必要がある、自分で作成した承認プロバイダーがあります。このような...

// Configure $auth service
app.config(function ($authProvider, appConfig) {

    $authProvider.setRequireLoginFunction(function($modal){

        // Use the modal service

    });
})

そして、これはプロバイダーコードです

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

    }

});

補足: ng-annotate を使用しているため、DI の配列構文は使用しないでください。

とにかく、ご覧のとおり、後で $auth.requireLogin.then(...) などを使用して呼び出される config フェーズに格納されている関数は、angular-ui モーダル サービスにアクセスする必要がありますが、呼び出すと後でプロバイダー内から関数を呼び出すと、明らかにDIのようなことは起こっていません. $modal をプロバイダーの依存関係に入れることもできません。これを行うのは時期尚早です。また、プロバイダーは、渡す関数に必要な依存関係がわからないためです。

答えはおそらく次のとおりだと思います。

A) 渡した関数内でインジェクターを使用して $modal サービスにアクセスするか、

B)外部から呼び出されたときにプロバイダー内から何らかの方法で関数を実行し、実行時に注入されたすべての提供された依存関係を何らかの方法で取得しますか?

これを簡単に説明できない場合は申し訳ありません。JSfiddle を作成しようとしましたが、コードを簡単にハッキングできませんでした。

4

0 に答える 0