2016-03-28 4 views
0

My Aim:コントローラーから表示できるパラメーターに関する制限事項(もしあれば)を学びます。今、コントローラの機能からビューにTwirlのキーワード(例:@、@ forなど)を送信してから、JSを使用してページの一部をリロードできるかどうかを確認しています。Playframework 2.x(Scala):コントローラーの機能からビューにTwirl/HTMLコードを渡す

コントローラー機能でas(HTML)を使用している間は、未加工のHTMLをビューに渡すことができます。しかし、コントローラの機能からすべてのシンタックスシュガーを持つscala.htmlタイプコードのブロックをビューの関連JS機能に送ることは可能です。関連する部門に表示できるようにたとえば、どのように/私は渡すことができ、次の

<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p> 

私は、コントローラの機能に上記をラップする場合:当然そう

Ok(<p style="padding:1rem;"> @for(i <- items){<h2>i.name</h2} </p>).as(HTML)

、私は次のエラーを取得します。コードは、純粋なHTMLではないよう:

enter image description here

だから、方法はありますか?またはテンプレート関連のすべてのキーワードをコントローラからビューに送信できません。ビューのファイルでのみ使用する必要があります。

+0

これを学ぶという目的を超えて、達成したい具体的なユースケースはありますか?私はこのアプローチの利点を理解するのに苦労しています。 – Anton

+0

@Antonサーバ/クライアントの比率が問題にならない場合は、より速いストリーミングソリューションの一部として使用できます。 –

答えて

1

トワールコードは、通常のScalaの関数にサーバー上でコンパイルされますが、例えばrenderItems.scala.html

@(items: List[Item]) 
<p style="padding:1rem;"> @for(i <- items){<h2>@i.name</h2} </p> 

のようなファイルを作成し、

Ok(renderItems(items)) 
のようにそれを呼び出すことができます

を(https://www.playframework.com/documentation/2.5.x/ScalaTemplateUseCases#Tags-%28they-are-just-functions,-right?%29を参照してください)

+0

こちらも興味深いアプローチです。https://github.com/brikis98/ping-play – OlegYch

+0

ありがとう、再生に行く!少しずつそれを更新し、必要に応じてこれを更新してください。 –

関連する問題