我正在尝试在元素上使用browserTrigger(),并且需要事件才能冒泡至其祖先,但是元素(祖先)的处理程序未触发

这是我要执行的操作的一个简单示例:

<div ng-click="catchMe()">
  <span>ClickMe</span>
</div>


从规格来看:

var child = $document.find('span');
browserTrigger(child,'click');


catchMe()事件(div的单击处理程序)没有被触发。

我检查了browserTrigger中的代码,并且传递给element.dispatchEvent(env)的事件与canBubble : true一起使用,所以我不明白为什么它不冒泡

更新:

我做了一个简单的工作冒泡example

但是,如果我将其作为测试运行,则不会冒泡:

it('should bubble event to parent element', function () {

  $scope.total = 0;
  var template = '<div class="out" ng-click="total = total + 1"><div class="in"></div></div>';
  var el = $compile(template)($scope);

  var divOut = el[0];
  browserTrigger(divOut,'click');
  expect($scope.total).toBe(1);

  var divIn = el[0].children[0];
  browserTrigger(divIn,'click');
  expect($scope.total).toBe(2);  // < ------ FAIL: $scope.total = 1

});

最佳答案

不推荐使用BrowserTrigger()。
用:

element.triggerHandler("click");

关于angularjs - 冒泡browserTrigger()事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20255208/

10-13 00:43