我刚刚开始使用 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: [ {name: ...' 异常。
我假设我可以使用将 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>
这也很乏味,但至少数据在一个地方。
有没有更好的办法?