我正在尝试在一个元素上使用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
});
答案 0 :(得分:0)
不推荐使用BrowserTrigger()。 使用:
element.triggerHandler("click");