0

我知道我可以通过这种方式运行提交 ajaxText 的脚本:

SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> "myScript();")

我想做的是改为执行 scala 方法。

明显地

SHtml.ajaxText(myVar, (str) => myVar = str, "onsubmit" -> myMethod)

不管用。

有没有办法我可以做到这一点?

4

2 回答 2

2

您的答案对我来说看起来不错,但是如果您不希望在执行后发生任何事情,则JsCmd不必执行任何操作。例如:

SHtml.ajaxText(myVar, (str) => {
  myVar = str
  myMethod()
  JsCmds.Noop
})

其中, 与在纯 JavaScriptJsCmds.Noop中发出几乎相同,因此该函数无需执行任何操作即可返回。return为了简洁起见,我将代码块内联,但您也可以只做您所做的事情(str) => f(str)并让您的方法返回JsCmds.Noop

于 2013-06-06T13:15:24.480 回答
1

我找到了一种方法,但不是那么干净。

由于该功能(str) => myVar = str也在提交时执行,这就是我所做的:

def f(str:String):JsCmd = {
  myVar = str
  myMethod()
  SetHtml("msg_div",<span> method executed </span>)
}

SHtml.ajaxText(myVar, (str) => f(str))

这样每次我在 ajaxTextmyMethod中提交修改时都会执行,但我不得不JsCmdf函数中返回一些。

如果您找到更好的方法,请告诉我。

于 2013-06-06T12:59:20.050 回答