我有一个使用Udash的Scala.js应用程序。该应用程序使用一些Bootstrap扩展,这些扩展可直接处理HTML DOM。我想遍历此DOM并为其添加更多处理程序(最终,我希望这些处理程序实现Udash binding)。我的麻烦是,我唯一能做到这一点的方法是插入script
标记,该标记希望我提供一个纯Javascript代码。
我可以通过此Javascript的Scala.js代码调用某种方式吗?通常,我将导出全局函数并向其传递任何必要的参数,但是我看不到任何干净的方法来传递this
,我想到的唯一方法是使用全局变量,这对我来说非常难看。是否有类似本地导出的内容,或如何通过其他方式创建可以传递给script
的JavaScript代码,从而可以访问Scala.js构造?
我当前的代码如下:
// somewhere in class ExtTable script { ExtTable.callback = { e => println(s"JS Callback for $e on $this") } //language=JavaScript s""" // I would like to implement this in Scala.js instead var t = $$('#${componentId.toString}'); t.bootstrapTable(); t.find("tr td:first-of-type").each(function(i,e){ ExtTable.callback(e); }) """ }
@js.annotation.JSExportTopLevel("ExtTable") object ExtTable { @js.annotation.JSExport var callback: js.Function1[Element, Unit] = _ }
我有一个使用Udash的Scala.js应用程序。该应用程序使用一些Bootstrap扩展,这些扩展可直接处理HTML DOM。我想遍历此DOM并为其添加更多处理程序(...
您需要使用一些jQuery包装器库。 Udash有它自己的...我正在使用最早的(here)(下面的示例)。