如何使用 jquery-ui 与 JSImport
How to use jquery-ui with JSImport
我想访问我的 scala js 项目中的 jquery ui 库。我尝试定义以下主模块:
import org.scalajs.jquery.JQueryStatic
import scala.scalajs.js
import org.scalajs.dom
import scalatags.JsDom.all._
import scala.scalajs.js.annotation.JSImport
@JSImport("jquery", JSImport.Namespace)
@js.native
object JQuery extends JQueryStatic
@js.native
trait JQueryUI extends JQueryStatic {
def spinner(options: js.Object = js.Dynamic.literal()): JQueryUI = js.native
}
@JSImport("jquery-ui", JSImport.Namespace)
@js.native
object JQueryUI extends JQueryUI
object App {
def main(args: Array[String]): Unit = {
dom.document.getElementById("root").appendChild(div(input(id := "input")).render)
JQuery("#input").asInstanceOf[JQueryUI].spinner()
}
}
而我的build.sbt如下:
enablePlugins(ScalaJSBundlerPlugin)
lazy val opexCounter = project.in(file(".")).settings(
name := "Repro",
scalaVersion := "2.12.8",
libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % "0.9.6",
"com.lihaoyi" %%% "scalatags" % "0.6.7",
"be.doeraene" %%% "scalajs-jquery" % "0.9.4"
),
npmDependencies in Compile ++= Seq(
"jquery" -> "2.2.1",
"jquery-ui" -> "1.12.1",
),
mainClass in Compile := Some("App"),
scalaJSUseMainModuleInitializer := true,
webpackDevServerPort := 3000
)
但是当我加载我的页面时,我的控制台出现以下错误:
TypeError: qual.spinner is not a function
这不是导入库的正确方法吗?如果不是,那是什么?
可以找到该项目的完整源代码here
我将我的 npm 依赖项从 jquery-ui 更改为 jquery-ui-bundle 并导入了它。我还必须明确引用我的 JQueryUIImport 对象以确保它被实例化。这 2 项更改解决了问题
我想访问我的 scala js 项目中的 jquery ui 库。我尝试定义以下主模块:
import org.scalajs.jquery.JQueryStatic
import scala.scalajs.js
import org.scalajs.dom
import scalatags.JsDom.all._
import scala.scalajs.js.annotation.JSImport
@JSImport("jquery", JSImport.Namespace)
@js.native
object JQuery extends JQueryStatic
@js.native
trait JQueryUI extends JQueryStatic {
def spinner(options: js.Object = js.Dynamic.literal()): JQueryUI = js.native
}
@JSImport("jquery-ui", JSImport.Namespace)
@js.native
object JQueryUI extends JQueryUI
object App {
def main(args: Array[String]): Unit = {
dom.document.getElementById("root").appendChild(div(input(id := "input")).render)
JQuery("#input").asInstanceOf[JQueryUI].spinner()
}
}
而我的build.sbt如下:
enablePlugins(ScalaJSBundlerPlugin)
lazy val opexCounter = project.in(file(".")).settings(
name := "Repro",
scalaVersion := "2.12.8",
libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % "0.9.6",
"com.lihaoyi" %%% "scalatags" % "0.6.7",
"be.doeraene" %%% "scalajs-jquery" % "0.9.4"
),
npmDependencies in Compile ++= Seq(
"jquery" -> "2.2.1",
"jquery-ui" -> "1.12.1",
),
mainClass in Compile := Some("App"),
scalaJSUseMainModuleInitializer := true,
webpackDevServerPort := 3000
)
但是当我加载我的页面时,我的控制台出现以下错误:
TypeError: qual.spinner is not a function
这不是导入库的正确方法吗?如果不是,那是什么?
可以找到该项目的完整源代码here
我将我的 npm 依赖项从 jquery-ui 更改为 jquery-ui-bundle 并导入了它。我还必须明确引用我的 JQueryUIImport 对象以确保它被实例化。这 2 项更改解决了问题