2009-11-15 19 views
1

我試圖建立一個簡單的搜索應用程序作爲一個學習實驗與彗星和Lift Framework。該計劃是爲一個頁面提供文本輸入和搜索結果空間。當輸入一個搜索詞時,它應該作爲ajax請求傳輸,結果應該被服務器推回並在同一頁上呈現。當服務器發現更多結果時,應將其推送到客戶端。Lift CometActor:組織生成的HTML渲染和fixedRender

使用Comet Chat Demo爲模板,我有使二者一個Ajax形式,然後從以下模板搜索結果中的CometActor:

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

相應SearchResult所演員呈現此兩個部分: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 
    } 
} 

原則上此代碼的工作,但它呈現以下結果的搜索框不是在上面,我會想到它。

我認爲,這與執行renderfixedRender的oder有關。如何更改此代碼使搜索框位於頂部?

+0

您在這裏可能會得到很好的回覆:http://groups.google.com/group/liftweb – 2009-11-20 23:50:15

回答

0

看看CssSelectors。但是我猜這個問題現在已經過時了;)CssSelectors在09年還不可用。