将工厂注入工厂

Koh*_*ese 1 factory angularjs

你如何从另一家工厂生产工厂?使用下面的控制台告诉我有一个错误(注入器:unpr).

angular.module( 'fb.services', [] ).factory( 'getQueryString', function() {
    return { call: function( qs ) {
        var result = {}, queryString = qs.substring( 1 ), re = /([^&=]+)=([^&]*)/g, m;
        while ( m = re.exec( queryString ) )
            result[decodeURIComponent( m[1] )] = decodeURIComponent( m[2] );
        return result;
    }}
});

angular.module( 'fb.services', ['fb.services'] ).factory( 'getReferrer', function( getQueryString ) {
        var qry = getQueryString.call( 'query=string&this=that' );
        // fails to find getQueryString
});
Run Code Online (Sandbox Code Playgroud)

PSL*_*PSL 5

你只需要这样做:

angular.module( 'fb.services').factory( 'getReferrer',['getQueryString', function( getQueryString ) {
        var qry = getQueryString.call( 'query=string&this=that' );
        // fails to find getQueryString
}]);
Run Code Online (Sandbox Code Playgroud)

当您在模块声明中使用第二个参数时,angular.module( 'fb.services','fb.services'] )这意味着您将使用新的依赖关系重新定义/定义模块,这意味着先前注册的任何内容都将丢失.

在定义了模块之后,您只需通过执行操作angular.module( 'fb.services') (省略第二个参数,因此它将成为已定义的模块的getter)

另请参阅依赖注入注释