2011-07-06 8 views
3

私はGoogleの閉鎖といくつかの仕事をし始めた、と私は、独自のテンプレートに選択フィールドの作成を動かすのが好き、とのようなもので、そのテンプレートに呼びたい:クローズテンプレート内にオブジェクトを作成することはできますか?

{call templates.utils.select} 
    {param name: 'state'/} 
    {param value: $selected_state /} 
    {{param options: [ 
    {name: 'Australian Capital Territory', value: 'ACT'}, 
    {name: 'New South Wales', value: 'NSW'}, 
    {name: 'Northern Territory', value: 'NT'}, 
    {name: 'Queensland', value: 'QLD'}, 
    {name: 'South Australia', value: 'SA'}, 
    {name: 'Tasmania', value: 'TAS'}, 
    {name: 'Victoria', value: 'VIC'}, 
    {name: 'Western Australia', value: 'WA'} 
    ]/}} 
{/call} 

templates.utils.selectテンプレートには正しいオプションのためにselectedプロパティを設定するロジックがあります。残念ながら、私は 'Soy V2構文にすべてのコードがありません(タグ{{param options:{{name:...}'の例外を受け取ります。

私はオプションパラメータを渡す呼び出しテンプレートに、その後私は非常に退屈になるだろうこれは、テンプレートに入るのすべての方法がカバーされていることを保証する必要があると思います。

を私は

に行かなければならないと思う瞬間
<select name="state"> 
    <option value="ACT" {if $selected_state=='ACT'}selected="selected"{/if}>Australian Capital Territory'</option> 
    <option value="NSW" {if $selected_state='NSW'}selected="selected"{/if}>New South Wales</option> 
    ... 
</select> 

また退屈であるが、少なくともデータは単一の場所にある。

良い方法がありますか?

答えて

4

Sept 19, 2011 release, Closure Templates provides support for list and map literalsより。残念ながら、リストとマップリテラルの小さなバグ(partially fixed in plovr)がありますが、すぐに正式な修正が予定されています。これは利用可能になった時点でplovrに統合されます。

+0

はい、私はplovrメーリングリストに記載されていることを見て非常に満足していました - 私は次のリリースに手を差し伸べることを楽しみにしています(plovrの9月版をリリースしてから数日待ったこれらの新しい輝きのあるおいしさ)、あなたは次のリリースがいつになるか考えていますか? – Cebjyre

+0

Windowsにいない場合、http://code.google.com/p/plovr/downloads/detail?name=plovr-d6db24beeb7f.jarのリテラルをサポートしてplovrを取得できます それ以外の場合は、待機する必要がありますhttp://code.google.com/p/plovr/issues/detail?id=51が修正されるまでさまざまな人々がバグのパッチを提出していますので、クリーンな方法で統合するだけで済みますし、もう一度OKにしてください。 – bolinfest

3

残念ながら、閉鎖テンプレートはリテラルリストやマップ値をサポートしていませんが、plovrを使用して問題を解決することができます(下記参照)。 Soyテンプレート内で値を作成するには、Closure TemplatesドキュメントのExpressionsセクションで表現できるものによって制限されます。

悲しいことに、マップリストリテラルが優先リストaccording to the maintainer of Closure Templates, Kai Huangで十分に高いとは限りません。

あなたがplovrを使用している場合が、あなたはorg.plovr.soy.function.PlovrModule機能プラグインを使用する場合は、カスタムlist()機能を経由してリストを使用することが可能となりsoy-function-pluginsオプションを活用することもできます。 Javadoc for ListFunctionは、list()関数をクロージャテンプレートでどのように使用できるかの例を示しています。

list()関数プラグインをplovrの外で使用する場合は、をfunction plugins as described in the Closure Templates documentationとする必要があります。

+0

乾杯、ええ、私はplovrを使用しています。私は2つの並行リストで必要なものを手に入れることができましたが、オブジェクトを含む単一のリストを作ることができませんでした - 私は何か間違っているのですか? – Cebjyre

+0

申し訳ありませんが、 'list()'は他の有効なClosure Templates式しか使用できないと思いますので、マップ/オブジェクトを 'list()'の引数として指定しようとすると動作しません。 – bolinfest

関連する問題