Lift CometActor: организация HTML, созданного с помощью render и fixedRender - PullRequest
1 голос
/ 15 ноября 2009

Я пытаюсь создать простое поисковое приложение в качестве учебного эксперимента с 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 отображает это в двух частях: 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. Как изменить этот код, чтобы окно поиска находилось вверху?

1 Ответ

0 голосов
/ 08 октября 2011

Посмотрите на CssSelectors. Но я думаю, что этот вопрос уже устарел;) Также CssSelectors не были доступны еще в 09.

...