“find”,“each”方法抛出类型不匹配错误

时间:2016-04-06 07:34:15

标签: scala.js

我正在尝试使用val x = $(selectState).find("option").each((y: Element) => y)迭代选项。但是编译抛出以下错误。

type mismatch;
 found   : org.scalajs.dom.Element => org.scalajs.dom.Element
    (which expands to)  org.scalajs.dom.raw.Element => org.scalajs.dom.raw.Element
 required: scala.scalajs.js.|[scala.scalajs.js.ThisFunction0[org.scalajs.dom.Element,Any],scala.scalajs.js.ThisFunction1[org.scalajs.dom.Element,Int,Any]]
    (which expands to)  scala.scalajs.js.|[scala.scalajs.js.ThisFunction0[org.scalajs.dom.raw.Element,Any],scala.scalajs.js.ThisFunction1[org.scalajs.dom.raw.Element,Int,Any]]

我指的是堆栈溢出问题here

1 个答案:

答案 0 :(得分:1)

好的,正式回答:是的,这是jquery-facade中的一个错误。谢谢你指出来了!

我怀疑这个问题是|类型的运算符干扰了编译器自动将Scala函数强制转换为JavaScript函数的能力。所以我不理解(y: Element) => y(一个Scala函数)可以变成JavaScript js.Function0 [Element,Any]。

所以我将each拆分为两个独立的重载,每个版本一个,并且看起来按照需要工作。请更新到jquery-facade 1.0-RC3,我认为它应该对你有用。