1

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

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

4

1 回答 1

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)
}

NoopRedirectTo. 将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))
  } />
于 2013-01-31T14:18:16.193 回答