LIFTWEB:如何使用单击按钮呈现简单表格?

时间:2013-05-31 13:41:49

标签: scala html-table render lift

我想显示一个单击按钮的HTML表格。

这是我到目前为止所尝试的:

我的SCALA代码:

object Snippet {

 def render = {

    def showTable() = {
      val table = <table border="1"> 
                    <caption>My Table</caption> 
                    <thead>  
                       <tr>
                          <td>Entry</td>
                          <td>Value1</td>
                          <td>Value2</td>
                       </tr>
                    </thead>
                    <tbody>
                       <tr>
                          <td>PREV</td>
                          <td>1</td>
                          <td>10</td>
                       </tr>
                       <tr>
                          <td>CURR</td>
                          <td>2</td>
                          <td>20</td>
                       </tr>
                       <tr>
                          <td>NEXT</td>
                          <td>3</td>
                          <td>30</td>
                       </tr>
                    </tbody>
                 </table>


      SetHtml("table_div",table)
    }

    "#getTable"  #> SHtml.button("Get Table", () => null, "onclick" -> "$('#msg_div').html('<span>Getting table...</span>')") &
    "name=proc"  #> SHtml.hidden(showTable)
 }

}

我的HTML:

        <div class="lift:Snippet.render">
            <form>
                <input type="hidden" name="proc"/>
            <button id="getTable" value="Get Table" class="btn btn-inverse">Get Table</button>

            </form>
            <div id="msg_div"></div>
            <div id="table_div"></div>
        </div>

点击按钮没有显示任何内容..你看到了什么问题? 或者有人可以告诉我另一种方法吗?

2 个答案:

答案 0 :(得分:2)

我不确定你想要用隐藏的输入完成什么。为什么不这样做:

"#getTable" #> SHtml.ajaxButton("Get Table", showTable)

如果您要显示等待指示符,则Lift具有设置ajax加载动画的机制。在Boot.scala

//Show the spinny image when an Ajax call starts
LiftRules.ajaxStart =
  Full(() => LiftRules.jsArtifacts.show("ajax-loader").cmd)

// Make the spinny image go away when it ends
LiftRules.ajaxEnd =
  Full(() => LiftRules.jsArtifacts.hide("ajax-loader").cmd)

您可以使用任何JsCmd来调用自己的函数。我可能会选择那个。

答案 1 :(得分:1)

完全赞同jcern。一种稍微不同的方式也可能是:

"#getTable [onclick]" #> SHtml.ajaxInvoke(showTable)

(这样你就不会覆盖原来的按钮名称)

另请注意,您甚至不需要使用<form>标记 - 您可以将其删除。