冒泡浏览器触发器()事件

时间:2013-11-27 23:35:19

标签: angularjs

我正在尝试在一个元素上使用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

});

1 个答案:

答案 0 :(得分:0)

不推荐使用BrowserTrigger()。 使用:

element.triggerHandler("click");