相关疑难解决方法(0)

角度 - 装饰指令

我正在尝试使用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)

在我的能力范围内,指令在装饰器函数运行时已经注册.任何见解将不胜感激!

angularjs angularjs-directive

13
推荐指数
1
解决办法
1万
查看次数

AngularJS:扩展输入指令

我想知道,如果有可能,扩展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)

缺点是,对于每个输入字段,我必须在我的代码中手动附加此侦听器.因此,更改现有的输入指令以包含此侦听器将是有用的.

javascript angularjs

8
推荐指数
2
解决办法
6259
查看次数