2016-04-14 5 views
1

私はangularJS 1.4.9とui bootstrap 1.0.3を使用しています。 私はuibDatepickerディレクティブを装飾したいが、デコレータ機能は決して実行されず、エラーメッセージや警告メッセージはコンソールに表示されない。 See this plunkerコンフィグブロック内のディレクティブデコレータは呼び出されません

var uib = angular.module('ui.bootstrap'); 
uib.config(function($provide) { 
    $provide.decorator('uibDatepickerDirective', function($delegate) { 
    alert('never logs this'); 
    return $delegate; 
}); 

var app = angular.module('plunker', ['ui.bootstrap']); 

app.controller('MainCtrl', function() { 
    var main = this; 
    main.welcome = 'hello you'; 

}); 

ご協力いただきありがとうござい

+0

あなたのHTMLにあなたが実際にこのディレクティブを使用することはありませんので、それを実行していません。 HTMLの指示文を使ったデモがあります:http://plnkr.co/edit/p4Hcgz83wv9d1WOl6eGo?p=preview – dfsq

答えて

0

あなたが実際にあなたが飾るしようとしているこのディレクティブを使用することはありませんので、デコレータ関数が実行されることはありません。

デコレータが呼び出されるのは、ディレクティブがテンプレートの実要素によって要求された場合だけです。これは、サービスおよびディレクティブが遅れて構成されているため(プロバイダ)、サービスまたはディレクティブが要求されない限り、プロバイダはアクティブではないためです。

ここでは、ディレクティブタグをテンプレートに配置するときに呼び出される例を示します。あなたのコードでは、この行を追加してみてください:

<uib-datepicker ng-model="dt" class="well well-sm"></uib-datepicker> 

デモ:http://plnkr.co/edit/p4Hcgz83wv9d1WOl6eGo?p=preview