2014-03-14 272 views
0

我是一名初學者,我創建了一個基本測試頁,我使用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,然後在需要的地方多次調用?

這是聲明,然後調用{{#address_country_style_type_value_is_4}}聲明中的內容。

回答

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}}}

+0

當你建議 - address.join('
') - 這是一個字符串生成器函數 - 是你的意思嗎? – user1261774

+0

除了在模板中使用'{{#each address}} {{this}} {{/ each}}',您可以在Javascript文件中添加一行:'address.join('
')'和那麼只能將'{{address}}}'放入模板中。 – harbichidian