我有一个简单的aurelia视图和视图模型。在我看来,我有一个指向svg的对象,我可以做mouseover.delegate =" domouseover()" mouseout.delegate =" domouseout()",但当我尝试使用click.delegate =" doClickSVG"永远不会调用doClickSVG()方法! 我究竟做错了什么?请帮忙,我花了很多时间试图解决这个问题!
我还有一个img指向另一个div中的SVG,当我执行click.delegate =" doClickSVG()"它称之为正常。
我尝试过各种各样的东西让click.delegate与一个对象一起工作,比如使它成为click.trigger。我甚至将click.delegate放在父元素上以查看是否有帮助,但没有运气。
查看
<object class="vehicle-icon vehicle-icon-selected" type="image/svg+xml" id="svgId"
data="e-3.svg" height="50" width="50" viewBox="0 0 50 50"
mouseover.delegate="domouseover()" mouseout.delegate="domouseout()"
click.delegate="doClickSVG()">
</object>
<div>
<img src="e-3-old.svg" click.delegate="doClickSVG()"/>
</div>
查看-模型 出口类App { message:string =&#39;欢迎来到Aurelia!&#39;;
domouseover() {
document.getElementById(event.srcElement.id).style.backgroundColor = "yellow";
document.getElementById(event.srcElement.id).getSVGDocument().getElementById("fillColor").style.fill = "blue";
}
domouseout() {
document.getElementById(event.srcElement.id).style.backgroundColor = "white";
document.getElementById(event.srcElement.id).getSVGDocument().getElementById("fillColor").style.fill = "green";
}
doClick() {
alert("in doClick");
}
doClickSVG() {
alert("in doClickSVG");
}
} 在这里输入代码
答案 0 :(得分:1)
以下是一个例子:https://gist.run?id=cef24c98e01402db7e7335464ff9e513
<强> app.html 强>
<template>
<object type="image/svg+xml" id="svgId"
data="e-3.svg" height="50" width="50" viewBox="0 0 50 50"
mouseover.delegate="domouseover()" mouseout.delegate="domouseout()"
click.delegate="doClickSVG()">
</object>
<div>
<img src="e-3.svg" click.delegate="doClickSVG()"/>
</div>
</template>
<强> app.js 强>
export class App {
message: string = 'Welcome to Aurelia!';
domouseover() {
document.getElementById(event.srcElement.id).style.backgroundColor = "yellow";
document.getElementById(event.srcElement.id).getSVGDocument().getElementById("fillColor").style.fill = "blue";
}
domouseout() {
document.getElementById(event.srcElement.id).style.backgroundColor = "white";
document.getElementById(event.srcElement.id).getSVGDocument().getElementById("fillColor").style.fill = "green";
}
doClickSVG() {
alert("in doClickSVG");
}
}
答案 1 :(得分:0)
对象元素可能不允许使用委托注册单击事件。尝试将click.delegate
替换为click.trigger
并查看是否有效。