ScalaJS上的draggable removeEventListener不起作用

时间:2016-05-16 01:57:34

标签: scala scala.js

基于js demo:http://jsfiddle.net/wfbY8/737/

user_product_order_id

从客户端代码中我使用它:

aws ecs register-task-definition --cli-input-json  file://wordpress.json

我看到"添加"并且"删除"在我的日志上。但是对于我来说,元素仍然是可移动的(当我移动鼠标时没有按下它),好像我没有从监听器移除mousemove事件(在mouseUp上)。

我想知道为什么......

1 个答案:

答案 0 :(得分:3)

这是因为您有效地将Scala函数(lambda)转换为addremove的JS函数。在Scala.js中,Scala函数根据需要隐式转换到JS函数。但是,转换每次都会生成不同的JS函数(它没有相同的标识)。因此,您尝试删除的功能与您添加的功能不是相同,当然也没有效果。

您可以通过强制转换提前发生来解决此问题,然后添加和删除相同的功能。为此,只需在函数val中添加一个显式类型作为JS函数:

  val divMove: js.Function1[MouseEvent, Unit] = (e:MouseEvent) => {
    ...
  }

这样,从Scala函数到JS函数的转换只发生一次,它与给add - 和removeEventListener的JS函数相同。