我正在尝试在 Lift 中渲染一个 ajaxButton,一旦单击,就会更新一个 SessionVar,然后使用 href 转到另一个页面:
def render ={
"li *" #> userItems.map(item =>
"li.button_open" #> SHtml.ajaxButton("Open", () => ajaxButtonOpen(item),
"class" -> "btn btn-primary", "href" -> {Site.menuItem.url})
)
}
def ajaxButtonOpen(item:Item) : JsCmd = {
UsersCurrentItemId apply item._id
JsCmd.unitToJsCmd(Unit)
}
此代码将执行 ajaxButtonOpen,但不会转到 Site.menuItem。我尝试了其他替代方案,例如:
"li.button_test" #> <a class="btn btn-primary" href= {Site.menuItem.url} onClick="{ajaxButtonOpen(item)}"> "Open"</a>
有谁知道我哪里出错了?任何帮助将不胜感激。
我会做这样的事情:
def render ={
"li *" #> userItems.map(item =>
"li.button_open" #> SHtml.ajaxButton("Open", () => ajaxButtonOpen(item),
"class" -> "btn btn-primary")
)
}
def ajaxButtonOpen(item:Item) : JsCmd = {
UsersCurrentItemId apply item._id
JsCmds.RedirectTo(Site.menuItem.url)
}
我用RedirectTo
替换了您的方法返回的Noop
.JsCmds.RedirectTo
将发出一个 javascript 重定向到新页面,并且应该完成您正在寻找的内容。
或者,您可以将原始ajaxButtonOpen
函数与 SHtml.onEvent
一起使用,将 ajax 事件处理程序添加到链接中:
"li.button_test" #>
<a class="btn btn-primary" href={Site.menuItem.url} onClick={
SHtml.onEvent( e => ajaxButtonOpen(item))
} />