【问题标题】:How do I render a SHtml.ajaxButton with 'onClick' action and href link in a Lift Snippet如何在 Lift Snippet 中使用“onClick”操作和 href 链接渲染 SHtml.ajaxButton
【发布时间】:2013-01-31 07:03:24
【问题描述】:

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

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

【问题讨论】:

    标签: scala render lift shtml


    【解决方案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)
    }
    

    我用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))
      } />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2013-02-28
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多