2016-04-17 17 views
0

を注入し、私は私が持っているので、角度のコントローラにいくつかのヘルパー(lodashと私自身のいくつか)を注入しようとしています:は異なるヘルパー関数に角度

angular.module('app').factory("_", Lodash); 
Lodash.$inject = ['$window']; 
function Lodash($window) { 
    if ($window._) 
    return $window._; 
} 

angular.module('app').factory("_", Helper); 
Helper.$inject = ['$window']; 
function Helper($window) { 
    return { 
    test: function() { 
     return "test"; 
    } 
    } 
} 

だから私は、すべてのヘルパーが_でアクセスになりたいです私はいくつかのJSファイルでそれらを定義します...これはできますか?

私のコードでは、lodashメソッドまたはtest()のいずれかしか動作しません。

+0

beacuse両方の工場が同じ名前を持っています。 – Reto

+0

はい、私は知っています...私の考えは、lodashのメソッドと私自身が同じファクトリで_BRodableにアクセスできるかどうかです。 –

答えて

1

、(それは無目的に役立ち、windowまたは_グローバルに置き換えることができますので、$windowは、ここでは重要ではありません)そこに利用可能です。

app.config(function ($injector, $provide) { 
    var lodash = $injector.has('_') ? $injector.get('_') : {}; 
    angular.extend(lodash, window._); 
    $provide.constant('_', lodash); 
}); 

app.config(function ($injector, $provide) { 
    var lodash = $injector.has('_') ? $injector.get('_') : {}; 
    angular.extend(lodash, { 
    test: ... 
    }); 
    $provide.constant('_', lodash); 
}); 

サービスはこのように定義されている場合、その値はconfigブロックの順序は重要ではありません、いくつかの回を拡張することができます。

また、サービス値がcan be changed with decoratorであることを確認するには、サービスが既に定義されている必要があります。

0

ファクトリを再宣言することはできません。既に気付いたように、これは以前のものを上書きします。

ヘルパーを別々のファイルで準備し、アプリ内の別のファクトリコールで登録することができます。 configブロックそれらを定義するには良い場所があるconstantサービスがすでにあるので、依存関係を必要としないサービスについては

+0

はい、それは私の考えです... lodashメソッドを_ factoryの自分のメソッドとマージする。しかし、どうしたらいいですか?投稿したコードを例に挙げてください。 –

関連する問題