3

元のプロバイダへの参照を維持しながら、コアプロバイダを$templateCacheのようにオーバーライドできますか? $templateCacheを大文字小文字を区別しないように上書きしたいと思います。

I.E.何かのように

var normalGet = $templateCache.get; 
var normalPut = $templateCache.put; 
$templateCache.get = function(key) { normalGet(key.toLowerCase()); }; 
$templateCache.put = function(key,value) { normalPut(key.toLowerCase(), value); }; 

しかし、よりハッキー、より多くのDIスタイル?

答えて

1

decoratorを使用して実際のProviderコードを変更してから、設定を行う前に設定フェーズで実行されます。

我々は$templateCacheProviderProviderために追加の接頭辞を使用してproviderは(あなたがディレクティブのディレクティブDDOを変更しているとき、それはDirectiveことができる)ことを示しています。このコードをアプリケーションのconfigフェーズに配置する必要があります。

コード

app.config(['$provide', Decorate]); 
function Decorate($provide) { 
    $provide.decorator('$templateCacheProvider', 
    ['$delegate', function($delegate) { 
     var templateCache = $delegate[0]; 

     var normalGet = templateCache.get; 
     var normalPut = templateCache.put; 
     templateCache.get = function(key) { return normalGet(key.toLowerCase()); }; 
     templateCache.put = function(key,value) { normalPut(key.toLowerCase(), value); }; 

     return $delegate; 
    }]); 
} 
+0

ヘッドアップのための@OndrejSvejdar私の悪い、修正、ありがとう。あなたが特に理解していないことを私が知っているかもしれませんか? –

+0

私はどのように/どこで/それを発射するか分からなかったので、$提供は私の後ろにあったものでした:) –

+0

@OndrejSvejdar checkout updated答え。まだ何が起こっているかわからない場合はお知らせください。 –

関連する問題