从本机Javascript处理程序调用Scala.js代码

问题描述 投票:2回答:1

我有一个使用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并为其添加更多处理程序(...

scala callback scala.js udash
1个回答
0
投票

您需要使用一些jQuery包装器库。 Udash有它自己的...我正在使用最早的(here)(下面的示例)。

© www.soinside.com 2019 - 2024. All rights reserved.