gpt4 book ai didi

javascript - 在 ng-repeat 中装饰 ng-click

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:51 24 4
gpt4 key购买 nike

我需要修饰 ngClickDirective 以添加自定义监听器。此代码适用于未嵌套在 ng-repeat 中的 ng-click:

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

ng-click 嵌套在 ng-repeat 中时,是否有任何方法可以使此 bind 工作?

显示问题的简单 plnkr:http://plnkr.co/edit/hEkBHG7pcJfoXff523Yl?p=preview

最佳答案

出于性能原因,ng-repeat 将只编译原始元素一次。然后只需克隆该元素并对集合中的每个项目进行链接。

因此,您必须在 link: 函数而不是像这样的 compile: 添加自定义监听器:

$provide.decorator('ngClickDirective', ['$delegate', function ($delegate) {
var originalCompile = $delegate[0].compile;
$delegate[0].compile = function() {
var originalLink = originalCompile.apply(this, arguments);

return function postLink(scope, element, attr) {
element.bind('click', function() {
alert('hello!');
});

return originalLink.apply(this, arguments);
};
};
return $delegate;
}]);

示例 Plunker: http://plnkr.co/edit/aGbB5LuJNtdL9JXtwNSV?p=preview

关于javascript - 在 ng-repeat 中装饰 ng-click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25281563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com