2016-07-06 74 views
0

我正在为wavesurfer.js库实现门面。我已阅读官方docsthesequestions。这应该是一件容易的事,但是我遇到了一些问题。我至今:Scala.js,为waveurfer.js输入门面

@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)没有正确传递。我的代码有什么问题?

+1

未找到''Container element''' [当DOM中没有元素用于给定的'container'标识符]时触发(https://github.com/katspaugh/wavesurfer.js/blob/e4d2536c6f27e5d8f2d1b6e32833018642904afa/) src/wavesurur.js#L49),而不是'container'属性本身不存在时。确保确实存在一个DOM元素,其“id”是“#waveform”。 – sjrd

+0

哦,我必须自己检查一下。 JS没有太多经验。谢谢。 – ars

回答

0

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