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

时间:2016-04-14 13:38:43

标签: angularjs angular-ui-bootstrap

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

});

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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

只有当模板中的real元素请求指令时才会调用Decorator。这是因为服务和指令是懒惰配置的(提供者),因此除非请求服务或指令,否则提供者不会处于活动状态。

以下是将指令标记放入模板时调用的示例。尝试在代码中添加以下行:

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

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

相关问题