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, который будет выполнен на этапе конфигурации, прежде чем вступить в действие.

Мы использовали $templateCacheProvider потому Provider добавляется префикс указывает, что его provider (это может быть Directive, когда вы изменяете директивы DDO директивы). Вы должны поместить этот код в фазу 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 проверка обновленный ответ. и дайте мне знать, если вы все еще не понимаете, что происходит. –