我正在尝试使用Angular的"装饰器"功能来为某些指令添加功能.假设我的指令名称是myDirective.我的代码看起来像这样:
angular.module('app').config([
'$provide', function($provide) {
return $provide.decorator('myDirective', [
'$delegate', '$log', function($delegate, $log) {
// TODO - It worked! Do something to modify the behavior
$log.info("In decorator");
}
]);
}
Run Code Online (Sandbox Code Playgroud)
]);
我一直收到这条消息:
Uncaught Error: [$injector:unpr] Unknown provider: myDirectiveProvider from app
Run Code Online (Sandbox Code Playgroud)
在我的能力范围内,指令在装饰器函数运行时已经注册.任何见解将不胜感激!
我想知道,如果有可能,扩展Angular的输入指令?我想将一些监听器附加到页面上的所有输入字段.我认为你可以装饰现有的模块$provide.decorate,但我不知道如何使用指令(更确切地说是输入指令)来做到这一点.
那么,有人能推动我朝着正确的方向前进吗?一些例子?
编辑
这是我到目前为止的指令:
angular.module('onFocusBlur').
directive('onFocusBlur', ["$rootScope", function($rootScope) {
return {
restrict: "A",
link: function(scope, elem, attrs) {
elem.bind('focus',function() {
scope.$apply(function() {
$rootScope[attrs.onFocusBlur] = true;
});
});
elem.bind('blur',function() {
scope.$apply(function() {
$rootScope[attrs.onFocusBlur] = false;
});
});
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
在我看来,我可以将它添加到这样的输入字段:
<input type="email" ng-model="email" on-focus-blur="repositionNavBar">
Run Code Online (Sandbox Code Playgroud)
缺点是,对于每个输入字段,我必须在我的代码中手动附加此侦听器.因此,更改现有的输入指令以包含此侦听器将是有用的.