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

メソッドからの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))
  } />
于 2013-01-31T14:18:16.193 に答える