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

装饰AngularJs中的ng-click指令

宰父劲
2023-03-14
问题内容

我一直在研究修改AngularJS ng-click指令以添加一些其他功能。对于如何使用它,我有一些不同的想法,但是一个简单的想法是将Google
Analytics(分析)跟踪添加到所有ng-clicks,另一个是防止双击。

为此,我的第一个想法是使用装饰器。所以像这样:

app.config(['$provide', function($provide) {
  $provide.decorator('ngClickDirective', ['$delegate', function($delegate) {
    // Trigger Google Analytics tracking here
    return $delegate;
  }]);
}]);

但这不会起作用,因为装饰器会在实例化时触发,而不是在满足指令中的表达式时触发。因此,在这种情况下,它将在加载带有指令的元素时进行分析,而不是在单击该元素时进行分析。

因此,提出了真正的问题。装饰器是否可以通过某种方式获取实例化指令的元素?如果我可以从委托那里到达该元素,则可以在ng-
click之外绑定我自己的click事件以触发它。

如果没有,您将如何在所有ng-click上添加一些内容?


问题答案:

您当然可以使用装饰器来添加功能。我快速做出了示范。基本上,在装饰器主体中,将您自己的编译函数替换为用于自定义逻辑的编译函数(在示例中,如果存在track属性,则绑定到click事件),然后调用原始编译函数。这是代码段:

$provide.decorator('ngClickDirective', function($delegate) {
  var original = $delegate[0].compile;
  $delegate[0].compile = function(element, attrs, transclude) {
    if(attrs.track !== undefined) {
      element.bind('click', function() {
        console.log('Tracking this');
      });
    }
    return original(element, attrs, transclude);
  };
  return $delegate;
})


 类似资料:
  • 问题内容: 我认为开箱即用的指令上使用众所周知的角度属性应该很容易。 例如,如果我的指令名称是myDirective,我想以这种方式使用它: 无需像下面的示例一样定义自定义点击属性(onClick) 似乎ng-click可以工作,但是您也需要在指令标签上也指定ng-controller,这也是我所不希望的。我想在周围的div上定义控制器 是否可以在指令上使用ng-click以及在父html元素上定

  • 问题内容: 从第一种观点看,似乎可以传递一些数据作为方法的参数,应在按下按钮期间调用。 但我看不出有什么区别。 我遵循了代码片段: HTML 要么 JS 两者都可以。 谢谢, 问题答案: 他们是一样的东西。您可以用来制作有效的html。

  • 问题内容: 任何人都可以为该JSFiddle提供正确的方法: JsFiddle链接 我正在尝试通过.class&#ID更改元素的类。 提前致谢 感谢tymeJV,新的JSFiddle: 解 问题答案: 正确的方法是根据切换变量使用,请考虑: CSS: JS: HTML: 通过根据变量(“ toggle”)是否为或分配引用的类(在上面为“红色”)来工作。

  • 问题内容: 是否可以为ng-click编写拦截器?我有一个按钮或链接,导致后端对象的删除。我想通过将属性添加到按钮/链接来创建一个确认对话框(模式)。例如: AngularJS有可能吗?有没有更好的方法可以解决此问题? 编辑 deleteIt方法驻留在不同的控制器中。 谢谢 问题答案: 我在下面放了一个示例指令: http://plnkr.co/edit/GJwK7ldGa9LY90bMuOfl?

  • 本文向大家介绍AngularJS基础 ng-click 指令示例代码,包括了AngularJS基础 ng-click 指令示例代码的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-click 指令 AngularJS 实例 按钮每次点击时,计数变量 count 自动加 1: 注意:实例中,按钮每被点击一次变量 "count"  定义和用法 ng-click 指令告诉了 Angul

  • 问题内容: 我正在构建AngularJS指令。我希望该指令包装其中包含ng-click的其他内容。单击后,结果按钮不执行任何操作。这是我尝试过的代码的简化版本: (HTML) (JavaScript) 如何更改它,以便该按钮实际触发$ scope.refresh()函数? 额外说明: 我需要该指令的本地对象信息(单个控制器中可以有多个该指令),因此我创建了一个新作用域。 问题答案: 就像dcode