Как я могу динамически задать параметр фрагмента lift?
Есть ли способ динамически изменять параметры фрагмента?
Например, если я назову этот URL
host:port/a_page?name=myname
Я хотел бы, чтобы моя страница выглядела так:
<div class="lift:surround?with=default;at=content">
<div class="lift:comet?type=MySnippet;name=myname" >
...
</div>
</div>
Возможно ли это вообще? Я попытался использовать некоторый javascript, чтобы извлечь param из url и поместить его в атрибут class
div
, но в моем понимании это не сработает, потому что скрипты всегда будут выполняться после того, как платформа lift сделает это волшебство.
Заранее спасибо! Любая помощь есть действительно ценить.
Я использовал оба совета, чтобы заставить его работать, как аджантис упоминал, что чтение парама непосредственно из фрагмента является самым простым способом, но не работает в вызове кометы. Решение рогача работает.
Итак, решение таково:
<div class="lift:Ex.wrap">
<div id="myid"></div>
</div>
def wrap = {
val name = "lift:comet?type=MySnippet;name=" + S.param("name").openOr("...")
"#myid" #> <div id="myid" class={name} ></div>
}
2 ответа:
Вы можете попробовать обернуть этот фрагмент кометы в другой фрагмент, который преобразует xml и добавляет этот
name=myname
вclass
. Например:<div class="lift:Ex.wrap"> <div class="lift:comet?type=MySnippet"></div> </div> class Ex { def wrap = { (n: NodeSeq) => // example transformation // AntiXML syntax import com.codecommit.antixml._; val comet = n \ "div" head; val comet2 = comet.copy(attrs = comet.attrs + ("class" -> (comet.attrs("class") + ";name=myname"))) n \ "div" updated (0, comet2) unselect } }