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