Как использовать jquery-ui с JSImport - PullRequest
0 голосов
/ 02 июля 2019

Я хочу получить доступ к библиотеке jquery ui в моем проекте scala js. Я попытался определить следующий основной модуль:

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 $ 1.spinner не является функцией

Разве это не правильный способ импорта библиотеки, и если нет, то какой?

Полный исходный код проекта можно найти здесь

1 Ответ

0 голосов
/ 03 июля 2019

Я изменил свою зависимость от npm с jquery-ui на jquery-ui-bundle и импортировал ее.Мне также пришлось сделать явную ссылку на мой объект JQueryUIImport, чтобы обеспечить его создание.Эти 2 изменения исправили проблему

...