Google Closure を使った作業を始めたばかりで、選択フィールドの作成を独自のテンプレートに移動し、そのテンプレートを次のように呼び出したいと思います。
{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 パラメーターを呼び出し元のテンプレートに渡すという回避策を使用できると思いますが、その場合、テンプレートに入るすべての方法がカバーされていることを確認する必要があり、非常に面倒です。
現時点では、私は一緒に行かなければならないと思います
<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>
これも面倒ですが、少なくともデータは 1 か所にあります。
より良い方法はありますか?