配置块中的指令装饰器从未被调用

Directive decorator in config block never called

我正在使用 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';

});

感谢您的帮助

装饰器函数永远不会执行,因为您从未真正使用过您试图装饰的指令。

仅当模板中的真实元素请求指令时才会调用装饰器。这是因为服务和指令是延迟配置的(提供者),因此除非请求服务或指令,否则提供者将不会激活。

这里是当你在模板中放置指令标签时被调用的例子。尝试在您的代码中添加这一行:

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

演示: http://plnkr.co/edit/p4Hcgz83wv9d1WOl6eGo?p=preview