3

スニペットのパラメーターを動的に変更する方法はありますか?

たとえば、この 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>

それは可能ですか?URLからパラメーターを抽出し、それをのclass属性に入れるためにJavaScriptを使用しようとしましたdivが、私の理解では、リフトフレームワークが魔法のようになった後にスクリプトが常に実行されるため、機能しません。

前もって感謝します!どんな助けでも本当に感謝しています。


ajantisが言及したように、スニペットから直接パラメータを読み取るのが最も簡単な方法ですが、コメットコールでは機能しません。Rogach ソリューションが機能します。

したがって、解決策は次のとおりです。

<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>
}
4

2 に答える 2

3

スニペット処理内で http パラメータを抽出しないのはなぜですか? すなわち

def render = {
   val name = S.param("name").openOr("...")
....
}
于 2012-07-24T07:42:32.973 に答える
2

そのコメット スニペットを別のスニペットでラップしてみてください。これにより、xml が変換され、それが に追加さname=mynameclassます。お気に入り:

<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
  }
 }
于 2012-07-24T06:30:48.637 に答える