我正在尝试在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>
有谁知道我哪里出错了?任何帮助将不胜感激。
答案 0 :(得分:1)
我会做这样的事情:
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)
}
我使用Noop
替换了方法中的RedirectTo
返回。 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))
} />