如何在提升片段中呈现带有'onClick'操作和 href 链接的 SHtml.ajaxButton



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

相关内容

  • 没有找到相关文章

最新更新