【发布时间】:2020-01-20 20:08:51
【问题描述】:
我正在使用一个引导弹出框,其中包含一个画布标签作为其内容的一部分。我不知道为什么画布标签没有出现,直到我遇到这个post。
所以我想我需要运行以下 javascript 代码:
$.fn.popover.Constructor.Default.whiteList.canvas = [];
如何在 scalajs 中做到这一点?
【问题讨论】:
标签: twitter-bootstrap scala.js
我正在使用一个引导弹出框,其中包含一个画布标签作为其内容的一部分。我不知道为什么画布标签没有出现,直到我遇到这个post。
所以我想我需要运行以下 javascript 代码:
$.fn.popover.Constructor.Default.whiteList.canvas = [];
如何在 scalajs 中做到这一点?
【问题讨论】:
标签: twitter-bootstrap scala.js
我尝试使用:
js.Dynamic.global.$.fn.popover.Constructor.Default.whiteList.canvas = js.Array()
但它会导致以下错误
类型错误:$g.$ 未定义
我想这与我使用 querki jquery-facade 的事实有关。因此,这使我找到了以下可行的解决方案:
$.fn.asInstanceOf[js.Dictionary[js.Object]]("popover")
.asInstanceOf[js.Dictionary[js.Object]]("Constructor")
.asInstanceOf[js.Dictionary[js.Object]]("Default")
.asInstanceOf[js.Dictionary[js.Object]]("whiteList")
.asInstanceOf[js.Dictionary[js.Object]].put("canvas", js.Array())
我添加了以下隐式类
implicit class ObjectEnhancer(obj: js.Object) {
class DynamicDict(obj: js.Object) extends Dynamic {
private val dict = obj.asInstanceOf[js.Dictionary[js.Object]]
def selectDynamic(name: String) = new DynamicDict(dict(name))
def updateDynamic(name: String)(value: js.Object) = dict.put(name, value)
}
def asDyn = new DynamicDict(obj)
}
这让我可以用更简洁的方式来写这个:
$.fn.asDyn.popover.Constructor.Default.whiteList.canvas = js.Array()
【讨论】:
$.fn.asInstanceOf[js.Dynamic].popover.Constructor.Default.whiteList.canvas = js.Array(),而无需定义ObjectEnhancer。
很简单:
import scala.scalajs.js
js.Dynamic.global.$.fn.popover.Constructor.Default.whiteList.canvas = js.Array()
【讨论】: