0

我需要帮助从 scalajs 应用程序(特别是 scalajs-react 应用程序)中初始化本机 JS var。从根本上说,我正在尝试使用Bootstrap 响应式数据表,我需要通过调用 dom.getElementById 获取我的 HTML 中的数据表元素来初始化数据表,该元素的类型为 DataTable,然后我需要像这样初始化:

$(document).ready(function() {
    $('#example').DataTable();
} );

我一直盯着@js.native 的东西看,不知道如何连接到那个原生 JS。任何帮助将不胜感激。作为参考,响应式数据表的原生 javascript 的链接在这里。对于具有 scalajs-react 背景的人(你在吗@japgolly?)的另一个问题是,进行此数据表初始化调用的最佳位置是否应该在 ReactComponentB.componentDidMount() 方法中?

4

1 回答 1

2

设置数据表的最简单方法是使用动态 API:

dom.document.getElementById("example").asInstanceOf[js.Dynamic].DataTable()

当然,您只需要在加载文档后执行此操作。您可以使用 scala-js-jquery 来执行此操作:

jQuery(dom.document).ready(() =>
  dom.document.getElementById("example").asInstanceOf[js.Dynamic].DataTable()
)

如果你想要更好的(和类型安全的)调用DataTable,你可以遵循Monkey Patching Guide(抱歉没有锚,搜索这个词):

@js.native
trait DataTableElement extends dom.Element {
  def DataTable(): Unit = js.native
}

object DataTableElement {
  implicit def element2dataTableElement(e: dom.Element): DataTableElement =
  {
    e.asInstanceOf[DataTableElement]
  }
}

您现在不再需要演员表了:

dom.document.getElementById("example").DataTable()

和:

jQuery(dom.document).ready(() =>
  dom.document.getElementById("example").DataTable()
)
于 2016-01-28T08:49:14.467 回答