Aurelia click.delegate无法处理对象元素,mouseover.delegate工作正常

时间:2016-04-26 22:07:54

标签: aurelia

我有一个简单的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");
}

}     在这里输入代码

2 个答案:

答案 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并查看是否有效。