作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究修改 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;
}]);
}]);
最佳答案
您当然可以使用装饰器来添加功能。我做了一个快速plunkr演示如何。基本上,在您的装饰器主体中,您将 compile 函数替换为您自己的自定义逻辑(在示例中,如果 track 属性存在,则绑定(bind)到 click 事件),然后调用原始 compile 函数。这是片段:
$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;
})
关于angularjs - 在 AngularJs 中装饰 ng-click 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335574/
我是一名优秀的程序员,十分优秀!