当前位置: 首页 > 面试题库 >

AngularJS:扩展输入指令

花欣然
2023-03-14
问题内容

我想知道是否有可能扩展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;
          });
        });
    }
  };
}]);

在我看来,可以将其添加到输入字段中,如下所示:

<input type="email" ng-model="email" on-focus-blur="repositionNavBar">

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


问题答案:

您可以轻松扩展任何指令-包括输入指令。
这是将类添加到指令的快速示例。



 类似资料:
  • 问题内容: 我想扩展一些递归的属性(又名深度复制)。就像jQuery一样。我不只包括jquery一件事的b / c。 您知道有什么优雅的方法可以使用简单的javascript或angularjs吗? 更新, 请看看并尝试完成相同的结果 http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview 我确实调查了.copy()但“属性(对象)已删除” 问题答案

  • 问题内容: 我想对第3方指令(特别是Angular UI Bootstrap)进行较小的修改。我只是想添加指令的范围: 但是我也想让Bower与Angular-Bootstrap保持同步。运行后,我将覆盖所做的更改。 那么,如何与该Bower组件分开扩展该指令? 问题答案: 解决此问题的最简单方法可能是在您的应用上创建与第三方指令同名的指令。这两个指令都将运行,并且您可以使用属性指定运行顺序(优先

  • 问题内容: 我有一个AngularJS属性指令,并且只要其父输入的值发生更改,我都想采取措施。现在,我正在使用jQuery: 没有jQuery,有没有办法做到这一点?我发现keyPress事件并没有完全实现我想要的功能,虽然我确定自己会提出解决方案,但是当我在Angular项目中使用jQuery时,我会有些紧张。 那么,Angular如何做到这一点呢? 问题答案: AngularJS文档中有一个很

  • 问题内容: 我在AngularJS应用程序中创建了一个指令,该指令在我的应用程序中生成样式输入。看起来像这样: 它的模板是: 调用很简单: 我想为此字段创建验证,并添加了错误信息: 而showError是: 基本上,它是从《用AngularJS掌握Web应用程序开发》一书中复制的。我有一个问题,因为当我在控制台中登录表单时,我的名字是,而不是name属性,这里的值应该是“ name”。我究竟做错了

  • Google输入法四角号码扩展 基于 Google输入法 Lua扩展API 开发, 实现了基本的四角号码输入功能.

  • 尝试1 将函数绑定到KeyPress/KeyDown事件。 我有一个regex可以在输入日期时验证日期(例如,它允许“12”但不允许“13”表示月份)。 看起来都不错。但是...编辑时开始显示一些奇怪的结果 假设输入为“10/21/1999” 他们想把月份改成“12”。 所以他们把光标放在“0”后面,然后点击退格键, 值现在为“12/11/999”并且无效,阻止输入 或者,他们只是突出显示“0”,