如何使用Scala.js创建javascript函数?
我使用以下方法创建了一个ScalaJS项目: 阅读上的文档,似乎没有描述创建和调用JavaScript函数 如何创建JavaScript函数并调用它 我将手动将d3添加到index.html的head元素中:如何使用Scala.js创建javascript函数?,javascript,scala,d3.js,scala.js,Javascript,Scala,D3.js,Scala.js,我使用以下方法创建了一个ScalaJS项目: 阅读上的文档,似乎没有描述创建和调用JavaScript函数 如何创建JavaScript函数并调用它 我将手动将d3添加到index.html的head元素中: <head> <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> </head> 在callFunction中,如果输入了svgContaine
<head>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
在callFunction
中,如果输入了svgContainer,当使用fastOptJS
构建时,callFunction
是否会被创建为JavaScript函数
在
jQuery(dom.document)中。准备好了吗{
,这是创建svgContainer
和testFunction
的正确方法吗?在Scala.js中,Scala.FunctionN
s可以隐式转换为js.FunctionN
s并返回,因此基本上不需要做任何事情:只需将lambda传递给JavaScript调用“在Scala.js中设置UI”。对于您的代码,它如下所示:
jQuery(dom.document).ready { () =>
val svgContainer = ...
}
有关这方面的更多信息,请参阅
更新:
以下是您的整个JavaScript代码片段的翻译:
import scala.scalajs.js
import org.scalajs.dom // see https://github.com/scala-js/scala-js-dom
import org.scalajs.jquery.jQuery // see https://github.com/scala-js/scala-js-jquery
object ScalaJSExample extends js.JSApp {
val d3 = js.Dynamic.global.d3 // assuming you don't have static types for d3, here
def main(): Unit = {
jQuery(dom.document).ready { () =>
val svgContainer =
d3.select("body").append("svg")
.attr("width", 1200)
.attr("height", 1200)
.attr("text-align", "center")
testFunction(svgContainer)
}
}
def testFunction(svgContainer: js.Dynamic): Unit = {
dom.alert(svgContainer.toString())
}
}
如你所见:
ready()
、DOM.document
和DOM.alert
js.Dynamic
以动态类型化的方式操作JavaScript值,使用正常语法(而不是字符串)def
定义函数。它们是否编译为JavaScript函数对您来说并不重要:只需编写Scala代码而不考虑它,编译器就会完成它的工作在Scala.js中,
Scala.function
s可以隐式转换为js.function
s并返回,因此基本上不需要做任何操作:只需将lambda传递给JavaScript调用。在Scala.js中的Setup UI下面有一个示例。对于代码,它如下所示:
jQuery(dom.document).ready { () =>
val svgContainer = ...
}
有关这方面的更多信息,请参阅
更新:
以下是您的整个JavaScript代码片段的翻译:
import scala.scalajs.js
import org.scalajs.dom // see https://github.com/scala-js/scala-js-dom
import org.scalajs.jquery.jQuery // see https://github.com/scala-js/scala-js-jquery
object ScalaJSExample extends js.JSApp {
val d3 = js.Dynamic.global.d3 // assuming you don't have static types for d3, here
def main(): Unit = {
jQuery(dom.document).ready { () =>
val svgContainer =
d3.select("body").append("svg")
.attr("width", 1200)
.attr("height", 1200)
.attr("text-align", "center")
testFunction(svgContainer)
}
}
def testFunction(svgContainer: js.Dynamic): Unit = {
dom.alert(svgContainer.toString())
}
}
如你所见:
ready()
、DOM.document
和DOM.alert
js.Dynamic
以动态类型化的方式操作JavaScript值,使用正常语法(而不是字符串)def
定义函数。它们是否编译为JavaScript函数对您来说并不重要:只需编写Scala代码而不考虑它,编译器就会完成它的工作请参阅问题更新,我不确定如何将svgContainer参数传递给函数并调用同一函数?请参阅问题更新,我不确定如何将svgContainer参数传递给函数并调用同一函数?