【发布时间】:2016-02-18 09:42:54
【问题描述】:
我有一个 jQuery UI 元素,我想写一些类似的东西
$('myAccordion').accordion("refresh")
但是,这不会编译,因为我只有 jQuery 的外观 - 而不是 jQuery UI。
我该如何继续?
【问题讨论】:
标签: scala.js
我有一个 jQuery UI 元素,我想写一些类似的东西
$('myAccordion').accordion("refresh")
但是,这不会编译,因为我只有 jQuery 的外观 - 而不是 jQuery UI。
我该如何继续?
【问题讨论】:
标签: scala.js
基本上,您为所需的功能编写一个迷你外观。这看起来很吓人,但关键是您只需要编写您实际使用的内容,因此非常简单。
请注意,这是现成的,未经测试,但一个简单的版本应该是这样的:
@js.native
trait JQueryAccordionFacade extends js.Object {
def accordion(cmd:String):JQuery = js.native
}
...
implicit def jq2Accordion(jq:JQuery):JQueryAccordionFacade = jq.asInstanceOf[JQueryAccordionFacade]
你需要一些导入和东西,显然这个可以写成更强类型的方式,但这就是大部分:只是你想要调用的函数的描述,以及从普通 JQuery 外观到 Accordion 外观的隐式转换。一旦你掌握了它的窍门,立面写作很容易。
Here are a couple of examples of some fully-worked jQuery UI facades 和 here are the full details on how to write jQuery facades(远远超出您的需要,但如果您想进一步推动)。
【讨论】:
dom.document.body.appendChild(script("function refreshAccordion() {$(\"#usingAccordion\").accordion(\"refresh\");}").render)和val clickButton = button(onclick := "refreshAccordion();").render,然后我可以用clickButton.click()刷新我的手风琴。