Liftweb WiringUI И JQueryUI Конфликт - PullRequest
3 голосов
/ 14 января 2012

Я делаю часть в моем приложении, требующую загрузки блока HTML в функции valueCell.

Мой код работает, но JQuery не выполняет свою работу, вкладки не отображаются.Я могу прочитать "Hello world" и имя вкладки, но у меня нет макета вкладки.

Более того, я могу добавить это, если я откажусь от использования Wiring UI (просто используя displayFormOK вместоdisplayForm на html-странице), он работает на отлично.

Вот мой код:

фрагмент:

object Menu {

  val searchType = ValueCell[Option[SearchType]](Some(Type1))
  //I removed some stuff to update the cell

  def displayForm = {
    WiringUI.apply(searchType)(displayFormAjax)
  }

  def displayFormOK ={
    displayFormAjax(searchType.get)(NodeSeq.Empty)
  }

  def displayFormAjax(sType: Option[SearchType])(n:NodeSeq):NodeSeq =
   {sType match{
      case None => <h3> Error on type </h3>
      case Some(x) => {x.displayForm}
   }}
}

Вот моя черта, представляющая выбранный объект

trait SearchType {
  val name:String
  def displayForm:NodeSeq = {
    <div id="tabs">
      <ul>
        <a href={"#"+name}> {name} </a></li>)}
      </ul> ++
      <div id={name}>Hello World </div> 
    </div>
  )}
}

Код в признаке является более сложным, на самом деле я хочу создать произвольное количество вкладок.

Наконец, вот мой HTML-код

<script>
    $(function() {
        $( "#tabs" ).tabs();
    });
</script>

<form class="lift:form.ajax">        
    <div class="lift:Menu.displayForm"></div>
</form>

1 Ответ

1 голос
/ 20 января 2012

Я нашел решение своей проблемы. Фактически, когда я добавил несколько html-блоков после «загрузки» скрипта, он не был применен к моему блоку. Поэтому мне приходилось вызывать скрипт каждый раз, когда использовался WiringUI. Вот мое решение:

def displayForm = {
  def cmdG(id: String, first: Boolean, setCmd: JsCmd) = new JsCmd{
    def toJsCmd = setCmd.toJsCmd + "; $(\"#tabs\").tabs();"
  }

  WiringUI.apply(searchType,cmdG _)(displayFormAjax)
}

Очевидно, я удалил скрипт из моего html-файла.

Примечание: Я также понял, что это не лучшее решение, которое я имел в своем коде, и теперь я буду использовать эту функцию JsCmd для отключения вкладок, которые я не хочу использовать.

...