【问题标题】:Scala.js, typed facade for wavesurfer.jsScala.js,wavesurfer.js 的类型化外观
【发布时间】:2016-07-07 04:37:30
【问题描述】:

我正在为wavesurfer.js 库实现一个外观。我已经阅读了官方的docsthese questions。这应该是一件容易的事,但是我遇到了一些问题。到目前为止我所拥有的:

@js.native
trait WaveSurferOpts extends js.Object {
  val container: String = js.native
  val waveColor: String = js.native
  val progressColor: String = js.native
}

object WaveSurferOpts {
  def apply(container: String, waveColor: String, progressColor: String): WaveSurferOpts = {
    js.Dynamic.literal(
      container = container,
      waveColor = waveColor,
      progressColor = progressColor
    ).asInstanceOf[WaveSurferOpts]
  }
}

@js.native
trait WaveSurfer extends js.Object {
  def load(url: String): js.Any = js.native
}

@js.native
object WaveSurfer extends js.Object {
  def create(options: WaveSurferOpts): WaveSurfer = js.native
}

它编译得很好,但是在运行时

  val wso = WaveSurferOpts("#waveform", "violet", "purple")
  val ws = WaveSurfer.create(wso)
  ws.load("audio.wav")

我明白了

VM4626:27 Error: Container element not found
    at Object.WaveSurfer.init (lingvodoc2-frontend-jsdeps.js:47468)
    at Object.WaveSurfer.create (lingvodoc2-frontend-jsdeps.js:47468)
    at 

似乎选项(基本上,唯一需要的参数是container)没有正确传递。我的代码有什么问题?

【问题讨论】:

标签: scala scala.js


【解决方案1】:

当 DOM 中没有给定容器标识符的元素时触发“找不到容器元素”,而不是在容器属性本身不存在时触发。确保确实存在 id 为 #waveform 的 DOM 元素。

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2020-02-23
    • 2016-12-29
    相关资源
    最近更新 更多