1

我正在尝试构建一个简单的搜索应用程序,作为 Comet 和Lift Framework的学习实验。计划是有一个带有文本输入和搜索结果空间的页面。当输入搜索词时,它应该作为 ajax 请求传输,结果应该由服务器推回并呈现在同一页面上。当服务器发现更多结果时,应该将它们推送到客户端。

使用Comet Chat Demo作为模板,我有一个 CometActor,它呈现 ajax 表单和来自以下模板的搜索结果:

<lift:comet type="SearchResults" name="Other">
  <search:input><search:input /><input type="submit" value="Search" /></search:input>
    <search:results>
      <div>Results for: <search:tag /></div>
      <div class="search-results">
        <search:list>
          <li><list:title /></li>
        </search:list>
      </div>
   </search:results>
</lift:comet>

相应的 SearchResults actor 将其呈现为两部分:fixedRender生成 ajax 表单并render负责呈现搜索结果。

class SearchResults extends CometActor {
    override lazy val fixedRender: Box[NodeSeq] = {
      SHtml.ajaxForm(bind("search", findKids(defaultXml, "search", "input"), 
                       "input" -> SHtml.text("", updateSearch _)))
    }

    private def updateSearch(tag: String) = Log.info("UpdateSearch: " + tag)

    def render = {
        bind("search", findKids(defaultXml, "search", "results"),
          "tag" -> "MyTag",  // TODO show actual search tag
          "list" -> <ul><li>Entry</li></ul>) // TODO actual search results
     }
}

原则上,这段代码可以工作,但它会将搜索框呈现在结果下方,而不是我期望的顶部。

我认为,这与执行 和 的顺序render有关fixedRender。如何更改此代码以使搜索框位于顶部?

4

1 回答 1

0

看看 CssSelectors。但我想这个问题现在已经过时了;) CssSelectors 在 09 年也不可用。

于 2011-10-08T10:12:21.563 回答