我试图以角度触发元素上的双击事件。
$timeout(function () {
var elem = document.getElementById(id);
angular.element(elem).trigger("dblclick")
}, 1);
具有事件侦听器的元素:
var nodeEnter = node.enter().append("g")
.attr("id", function (d) {
if (d.id)
return d.id;
else
return Math.random();
})
.on("dblclick", function () {
console.log("dblclick");
});
什么都没发生。我在这里做错了什么?
BTW,它进入调用触发器的函数。 触发器不会调用dblclick。
答案 0 :(得分:0)
wrap
函数中必须有$timeout
行。
$timeout(function() {
var elem = document.getElementById(id);
angular.element(elem).triggerHandler("dblclick");
},0);
$timeout()
进程是常规Javascript setTimeout
函数
默认情况下,在其末尾触发$apply()
。你也可以
指示$timeout()
不要调用$apply()
函数。
答案 1 :(得分:0)
如果要触发双击元素,请执行以下操作。
<h1 ng-dblclick="count = count + 1" ng-init="count=0">Welcome</h1>
答案 2 :(得分:0)
问题是我的代码中的“.on”方法属于d3库,它对事件“__ ontype”使用不同的命名约定。
请看这个链接:
https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#on
此约定与jquery或angular的jqlite“trigger()”或“triggerHandler()”不对应。
使用原生javascript解决了问题:
var elem = document.getElementById(id);
var event = new MouseEvent("dblclick");
elem.dispatchEvent(event);
另外,在d3版本4中有一个指定的api用于调度事件: