我在我的应用程序中做了一部分,需要在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>
答案 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功能来禁用我不想使用的选项卡。