Возможно ли иметь события процесса angularjs ng-click во время фазы захвата вместо фазы барботирования? Я хочу агрегировать данные из каждого из родительских элементов, начиная с родительского и заканчивая элементом, на который был нажат.
Может ли процесс отслеживания процесса ng-click во время фазы захвата?
Ответ 1
Давайте посмотрим исходный код ng-click
на ngEventDirs.js#L50
Как вы можете видеть ng-click
и все другие директивы событий, используя .on()
.
Итак, ответ Нет, это невозможно.
Если вам это действительно нужно, вы можете написать для этого специальную директиву. Например, немного измените код ng-click
:
.directive('captureClick', function($parse) {
return {
restrict: 'A',
compile: function(element, attrs) {
var fn = $parse(attrs.captureClick);
return function(scope, element) {
element[0].addEventListener('click', function(event) {
scope.$apply(function() {
fn(scope, {
$event: event
});
});
}, true);
};
}
}
});
и используйте его следующим образом:
<div title="A" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
<div title="B" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
<div title="C" ng-click="onBubbled($event)" capture-click="onCaptured($event)">
Yo!
</div>
</div>
</div>
Пример Plunker: http://plnkr.co/edit/SVPv0fCNRQX4JXHeL47X?p=preview