从 scala.js 调用 jquery .each 方法
Call jquery .each method from scala.js
此文档是否已过时? http://www.scala-js.org/doc/calling-javascript.html
似乎无法在 intellij 中做到这一点:
import org.scalajs.dom.html
import org.scalajs.dom
import org.scalajs.dom.raw.HTMLElement
import scala.scalajs.js
import js.JSConverters._
import fr.iscpif.scaladget.d3._
import fr.iscpif.scaladget.mapping._
import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import org.scalajs.jquery.jQuery
/**
* Created by IDEA on 31/10/15.
*/
@JSExport
object LearnD3 {
@JSExport
def main(div: html.Div): Unit = {
jQuery("#list > li").each((x, y) => y)
}
}
第一个dom.HTMLElement好像不存在。有 org.scalajs.dom.raw.HTMLElement
,但即使我导入,也存在类型不匹配:
实际上,这一直只是一个概念性的例子,说明如何使用 ThisFunction——对于松散类型的 scala-js-jquery facade. (It's closer to the jquery-facade version,它实际上从来都不是正确的,尽管目前仍然需要 Element 而不是HTMLElement,因为那是 JQuery 文档所说的。我应该考虑是否应该收紧它;老实说我不确定。)
但基本上,这从来没有打算成为文字代码,而且我相信它从来没有像这样工作过。这只是 ThisFunction
.
语法的说明
至于 HTMLElement,是的,现在在 raw
之下。您现在通常将其称为 dom.html.Element
。在这方面,它 已经过时了。但无论如何,这个例子应该更多地被当作一个概念而不是文字代码。 (是的,该示例可能会使用重写;PR 通常很乐意接受。)
您需要指定参数的类型。以下代码有效:
val x = jQuery("#list > li").each((i: js.Any, y: Element) => y)
您可能会注意到索引 i
是 Any
类型,通常您希望索引是 Int
类型。由于这类问题,jquery-facade 诞生了:jquery 的更强类型的门面。我强烈推荐它。 jquery-facade:
中的相同代码
import org.querki.jquery._
...
val x = $("#list > li").each((y: Element, i: Int) => y)
或者,如果您不需要 i
索引:
val x = $("#list > li").each((y: Element) => y)
或者您希望推断 y
类型:
val x = $("#list > li").foreach(y => y)
此文档是否已过时? http://www.scala-js.org/doc/calling-javascript.html 似乎无法在 intellij 中做到这一点:
import org.scalajs.dom.html
import org.scalajs.dom
import org.scalajs.dom.raw.HTMLElement
import scala.scalajs.js
import js.JSConverters._
import fr.iscpif.scaladget.d3._
import fr.iscpif.scaladget.mapping._
import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import org.scalajs.jquery.jQuery
/**
* Created by IDEA on 31/10/15.
*/
@JSExport
object LearnD3 {
@JSExport
def main(div: html.Div): Unit = {
jQuery("#list > li").each((x, y) => y)
}
}
第一个dom.HTMLElement好像不存在。有 org.scalajs.dom.raw.HTMLElement
,但即使我导入,也存在类型不匹配:
实际上,这一直只是一个概念性的例子,说明如何使用 ThisFunction——对于松散类型的 scala-js-jquery facade. (It's closer to the jquery-facade version,它实际上从来都不是正确的,尽管目前仍然需要 Element 而不是HTMLElement,因为那是 JQuery 文档所说的。我应该考虑是否应该收紧它;老实说我不确定。)
但基本上,这从来没有打算成为文字代码,而且我相信它从来没有像这样工作过。这只是 ThisFunction
.
至于 HTMLElement,是的,现在在 raw
之下。您现在通常将其称为 dom.html.Element
。在这方面,它 已经过时了。但无论如何,这个例子应该更多地被当作一个概念而不是文字代码。 (是的,该示例可能会使用重写;PR 通常很乐意接受。)
您需要指定参数的类型。以下代码有效:
val x = jQuery("#list > li").each((i: js.Any, y: Element) => y)
您可能会注意到索引 i
是 Any
类型,通常您希望索引是 Int
类型。由于这类问题,jquery-facade 诞生了:jquery 的更强类型的门面。我强烈推荐它。 jquery-facade:
import org.querki.jquery._
...
val x = $("#list > li").each((y: Element, i: Int) => y)
或者,如果您不需要 i
索引:
val x = $("#list > li").each((y: Element) => y)
或者您希望推断 y
类型:
val x = $("#list > li").foreach(y => y)