第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 Javascript 類轉(zhuǎn)換為 ScalaJS

如何將 Javascript 類轉(zhuǎn)換為 ScalaJS

慕妹3242003 2023-07-20 14:55:16
我有這個簡單的 JavaScript 代碼:import Modeler from 'bpmn-js/lib/Modeler';import diagramXML from './diagram.bpmn';const modeler = new Modeler({  container: '#canvas'});modeler.importXML(diagramXML);在瀏覽器中打開時會顯示一個圖表。我想在ScalaJS中執(zhí)行此操作,但我錯過了一些東西。這是我的代碼:@JSImport("resources/diagram.bpmn", JSImport.Default)@js.nativeobject DiagramXML extends js.Objectobject Main {  @JSExportTopLevel("main")  def main(): Unit = {    val modeler = new Modeler(js.Object(      "container" -> "#canvas"    ))   modeler.importXML(DiagramXML.toString) }}這是我的外觀Modeler:@js.native@JSImport("bpmn-js/lib/Modeler", "Modeler")class BpmnJS(options: js.Object) extends js.Object {  def importXML(xml: String): js.Promise[Any] = js.native}當我調(diào)試時,xml 已正確加載。所缺少的只是它在 DOM 中正確呈現(xiàn)。
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

我可以確定您的翻譯中的兩個問題。第一個是importbpmn-js。JS 導入是

import?Modeler?from?'bpmn-js/lib/Modeler';

應該翻譯成

@JSImport("bpmn-js/lib/Modeler",?JSImport.Default)

根據(jù)翻譯成的文檔import@JSImport。

另一個問題則更為微妙。在您的調(diào)用中new Modeler,您有

js.Object(

? "container" -> "#canvas"

)

它(也許不幸的是)編譯但不做你認為它做的事情。它創(chuàng)建兩個字符串的 Scala 元組,該元組被傳遞給 JavaScript 函數(shù),Object(...)該函數(shù)實際上會按原樣返回它(因為 Scala 元組已經(jīng)是一個對象)。


您想要的是一個帶有字段的 JavaScript 對象container,您可以將其寫為


new js.Object {

? val container = "#canvas"

}

更好的方法是在外觀中使選項對象靜態(tài)類型化:


class BpmnJS(options: BpmnJSOptions) extends js.Object {

? ..

}


trait BpmnJSOptions extends js.Object {

? var container: js.UndefOr[String] = js.undefined

}

這樣,您就可以將其稱為


new BpmnJS(new BpmnJSOptions {

? container = "#canvas"

})


查看完整回答
反對 回復 2023-07-20
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號