Как отобразить SHtml.ajaxButton с действием onClick и ссылкой href в сниппете?

Я пытаюсь отобразить ajaxButton в Lift, который после нажатия обновляет 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>

Кто-нибудь знает, где я ошибаюсь? Любая помощь будет принята с благодарностью.


person fin    schedule 31.01.2013    source источник


Ответы (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< /a> чтобы добавить обработчик события ajax к вашей ссылке:

"li.button_test" #> 
  <a class="btn btn-primary" href={Site.menuItem.url} onClick={
    SHtml.onEvent( e => ajaxButtonOpen(item))
  } />
person jcern    schedule 31.01.2013
comment
Спасибо большое jern! - person fin; 31.01.2013