1

我想显示一个单击按钮的 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>

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

4

2 回答 2

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)

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

于 2013-05-31T15:05:44.877 回答
1

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

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

(这样您就不会覆盖原始按钮名称)

另请注意,您甚至不需要使用<form>标签——您可以删除它。

于 2013-05-31T17:50:11.717 回答