Liftweb WiringUI和JQueryUI冲突

时间:2012-01-14 10:23:11

标签: jquery jquery-ui scala lift

我在我的应用程序中做了一部分,需要在valueCell函数中加载HTML块。

我的代码正在运行,但JQuery没有正常工作,标签不会显示。我可以阅读“Hello world”和标签名称,但我没有标签布局。

此外,我可以补充一点,如果我删除使用连线UI(只是在html页面中使用displayFormOK而不是displayForm),它的效果非常好。

这是我的代码:

片段:

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 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。事实上,当我在“加载”脚本后添加一些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功能来禁用我不想使用的选项卡。