我知道我可以运行一个脚本提交一个ajaxText:
SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> "myScript();")
我想做的是执行一个scala方法。
显然SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> myMethod)
不工作
我可以这样做吗?
你的答案对我来说很好,但是如果你不想在执行后发生任何事情,你不必让JsCmd
做任何事情。例如:
SHtml.ajaxText(myVar, (str) => {
myVar = str
myMethod()
JsCmds.Noop
})
其中的JsCmds.Noop
,与在纯JavaScript中发出return
几乎相同,因此该函数返回而不做任何事情。为了简洁起见,我将代码块内联,但是您也可以只做您对(str) => f(str)
所做的事情,并让您的方法返回JsCmds.Noop
。
我找到了一个方法,但不是那么干净。
由于函数(str) => myVar = str
也在提交时执行,所以我所做的就是:
def f(str:String):JsCmd = {
myVar = str
myMethod()
SetHtml("msg_div",<span> method executed </span>)
}
SHtml.ajaxText(myVar, (str) => f(str))
这种方式每次我提交修改在ajaxText myMethod
被执行,但我被迫返回一些JsCmd
从f
函数。
如果你找到更好的方法,请告诉我。