動的コンテンツを含むWebページがあります。製品ページだとしましょう。ユーザーが直接アクセスしたときexample.com/product/123
に、サーバー上で製品テンプレートをレンダリングし、ブラウザーにhtmlを送信したいと思います。ただし、ユーザーが後でリンクをクリックしたときに、/product/555
JavaScriptを使用してクライアント側のテンプレートを更新したいと思います。
Knockout.jsやAngularjsのようなものを使用したいのですが、これらのテンプレートにサーバー上の初期データを事前入力し、クライアント上に機能するテンプレートを保持する方法がわかりません。つまり、私のAngularテンプレートがこれである場合:
<ul>
<li ng-repeat="feature in features">
{{feature.title}}
<p>{{feature.description}}</p>
</li>
</ul>
ユーザーがURLに直接アクセスする場合、Angularテンプレートとして機能するものが必要ですが、現在の製品のhtmlが入力されています。明らかにこれは機能しません:
<ul>
<li ng-repeat="feature in features">Hello
<p>This feature was rendered server-side</p>
</li>
<li>Asdf <p>These are stuck here now since angular won't replace them when
it updates.... </p></li>
</ul>
私の唯一の選択肢は、サーバーでレンダリングされたhtmlを別の一致するテンプレートと一緒にブラウザに送信することだと思われます...?
その場合、すべてのテンプレートを2回書くことは避けたいと思います。つまり、サーバー言語をJavaScriptに切り替えるか(これについては満足できません)、JavaとJavaScriptの両方にコンパイルできるテンプレート言語を選択してから、それをPlay Frameworkにハックする方法を見つける必要があります(これが現在使用しています。)
誰かアドバイスはありますか?