handlebars.js - 声明if语句

时间:2014-03-14 00:17:28

标签: javascript handlebars.js

我是初学者,我创建了一个基本测试页面,我使用handlebars.js根据国家/地区值样式编号显示不同的国家/地区地址格式。

以下是我目前拥有的代码片段:

    {{# if address_country_style_type_value_is_4 }}

        {{! Country Name: Algeria }}
        {{! Index Value: 4 }}
        {{! Address Style: 2 }}

        {{# if address_line_1 }}
            {{{ address_line_1 }}}<br />
        {{/if}}
        {{# if address_street_details }}
            {{ address_street_details }}<br />
        {{/if}}
        {{# if address_postal_code }}
            {{ address_postal_code }}&nbsp;
        {{/if}}
        {{# if address_locality }}
            {{ address_locality }}
        {{/if}}
        {{# if address_country_name }}
            <br />{{ address_country_name }}
        {{/if}}

    {{/if}}

    {{# if address_country_style_type_value_is_5 }}

        {{! Country Name: American Samoa }}
        {{! Index Value: 5 }}
        {{! Address Style: 7 }}

        {{# if address_line_1 }}
            {{{ address_line_1 }}}<br />
        {{/if}}
        {{# if address_street_details }}
            {{ address_street_details }}<br />
        {{/if}}
        {{# if address_locality }}
            {{ address_locality }}&nbsp;
        {{/if}}
        {{# if address_region }}
            {{ address_region }}&nbsp;
        {{/if}}
        {{# if address_postal_code }}
            {{ address_postal_code }}
        {{/if}}
        {{# if address_country_name }}
            <br />{{ address_country_name }}
        {{/if}}

    {{/if}}

当用户选择address_country_style_type_value_is_4时,显示地址样式#2。在我的代码中,地址样式#2显示的代码重复了很多次 - 我知道反复重复相同的代码是不好的。

我的问题是我如何编写把手代码,以便我将地址样式#2写入一次,然后在需要的地方多次调用?

这是声明,然后调用 {{#if address_country_style_type_value_is_4}} 声明中的内容。

1 个答案:

答案 0 :(得分:0)

您可以在Javascript中更改它:

,而不是更改模板中的格式

switch(address_country_style_type) {
case 4:
  address = [
    address_line_1,
    address_street_details,
    address_postal_code + '&nbsp;' + address_locality,
    address_country_name
  ];
  break;
case 5:
  address = [
    address_line_1,
    address_street_details,
    address_locality + '&nbsp;' + address_region + '&nbsp;' + address_postal_code,
    address_country_name
  ];
  break;
}

然后只渲染地址中的内容:

{{#each address}}
  {{this}}<br>
{{/each}}

当然,此时您可以提前将所有内容与address.join('<br>')合并,然后呈现{{{address}}}