Ajax Liftweb:如何执行一个";斯卡拉“;提交文本后的方法

Ajax Liftweb:如何执行一个";斯卡拉“;提交文本后的方法,ajax,scala,lift,onsubmit,Ajax,Scala,Lift,Onsubmit,我知道我可以通过以下方式运行提交ajaxText的脚本: SHtml.ajaxText(myVar,(str)=>myVar=str,“onsubmit”->“myScript();”) 我想做的是执行scala方法 显然 SHtml.ajaxText(myVar,(str)=>myVar=str,“onsubmit”->myMethod) 它不起作用 有什么办法可以做到这一点吗?我找到了一个办法,但不是很干净 由于函数(str)=>myVar=str也在提交时执行,所以我就是这么做的: d

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

SHtml.ajaxText(myVar,(str)=>myVar=str,“onsubmit”->“myScript();”)
我想做的是执行scala方法

显然

SHtml.ajaxText(myVar,(str)=>myVar=str,“onsubmit”->myMethod)
它不起作用


有什么办法可以做到这一点吗?

我找到了一个办法,但不是很干净

由于函数
(str)=>myVar=str
也在提交时执行,所以我就是这么做的:

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

SHtml.ajaxText(myVar, (str) => f(str))
def(str:String):JsCmd={
myVar=str
myMethod()
SetHtml(“msg_div”,执行的方法)
}
SHtml.ajaxText(myVar,(str)=>f(str))
这样,每次我在ajaxText中提交修改时,都会执行
myMethod
,但我必须从
f
函数返回一些
JsCmd


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

我找到了一种方法,但不是很干净

由于函数
(str)=>myVar=str
也在提交时执行,所以我就是这么做的:

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

SHtml.ajaxText(myVar, (str) => f(str))
def(str:String):JsCmd={
myVar=str
myMethod()
SetHtml(“msg_div”,执行的方法)
}
SHtml.ajaxText(myVar,(str)=>f(str))
这样,每次我在ajaxText中提交修改时,都会执行
myMethod
,但我必须从
f
函数返回一些
JsCmd


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

我觉得你的答案很好,但是如果你不想在执行后发生任何事情,你不必让
JsCmd
做任何事情。例如:

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

其中
JsCmds.Noop
,与在普通JavaScript中发出
return
几乎相同,因此函数返回时不做任何操作。为了简洁起见,我将代码块内联,但是您也可以像使用
(str)=>f(str)
那样,让您的方法返回
JsCmds.Noop

您的答案在我看来很好,但是如果您不想在执行后发生任何事情,您不必让
JsCmd
做任何事情。例如:

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

其中
JsCmds.Noop
,与在普通JavaScript中发出
return
几乎相同,因此函数返回时不做任何操作。为了简洁起见,我将代码块内联,但您也可以像使用
(str)=>f(str)
那样,让您的方法返回
JsCmds.Noop

很高兴我能继续提供帮助。如果你还有其他问题,尽管问吧,我们会尽力帮助你。很高兴我能继续提供帮助。如果您还有其他问题,请提问,我们会尽力帮助您。顺便说一下,您可以将
(str)=>f(str)
缩短为
str=>f(str)
,只需计划
f
。(实际上你甚至可能不需要
。如果你写
def
(或者
val
f={str:String=>
…顺便说一句,你可以把
(str)=>f(str)
缩短为
str=>f(str)
,只计划
f
。(实际上,您甚至可能不需要
def
(或
val
f={str:String=>
。)。。。