2010-12-18 10 views
0

を使用している場合、テンプレートから元のHTMLをレンダリングするためにどのように私はスカラ座/リフト初心者だと私は、各項目のオプションの「タグ」でリストをレンダリングするとのトラブルを抱えています。 ":警告E"で(スカラ)リフト、Helpers.bind

私のHTMLテンプレートは、私は、特定の場合には、内容を持っている私が好きな

def list(node : NodeSeq) : NodeSeq = { 

    getItems flatMap(it => { 

    Helpers.bind("e", node, 
        "name" -> { Text(it.name) }, 
        "warning" -> { 
         if (it.isDangerous) { <<INSERT HTML FROM TEMPLATE>> } 
         else { Text("") } 
         } 
       ) 
    }) 
} 

を持って

<lift:Items.list> 
    <e:name>Rock</e:name><br /> 
    <e:warning><span style="color:#ff0000;">DANGER!</span></e:warning> 
</lift:Items.list> 

そしてItems.scalaに言いますタグをそのまま使用します。 「ノード」からそれらを抽出する簡単な方法があると確信していますが、私はリフトの知識に大きな違いがあると思います。 誰かが私に適切な処置を指摘できれば、とても感謝しています。


は答えた:アドバイスを 感謝を。私はこのように自分のコードを構造化した:

"warning" -> { (n : NodeSeq) => { 
        if (it.isDangerous) { n } else { Text("") } 
       }} 
+0

可能な重複:http://stackoverflow.com/questions/4404111 – Debilski

答えて

1

ノード名に関数をバインドするだけで、NodeSeqを受け取り、NodeSeqを返すことができます。

例えば:<e:warning>ノードの

def warning(in: NodeSeq): NodeSeq = doSomethingWith(in) 

// ... 

Helpers.bind("e", node, "warning" -> warning _) 

内容物は、次いで、形質転換され、挿入されます。

0

私はあなたがやろうとしているのかわからない。あるものか別のものを表示する場合は、「テンプレートとボックスを選択」を使用します。