如何使用'onClick'动作渲染SHtml.ajaxButton并在Lift片段中使用href链接

时间:2013-01-31 07:03:25

标签: scala render lift shtml

我正在尝试在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>

有谁知道我哪里出错了?任何帮助将不胜感激。

1 个答案:

答案 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))
  } />