Handlebars.js: ν…œν”Œλ¦Ώμ—μ„œ λ³€μˆ˜ ν• λ‹Ή

에 λ§Œλ“  2013λ…„ 03μ›” 29일  Β·  11μ½”λ©˜νŠΈ  Β·  좜처: handlebars-lang/handlebars.js

ν…œν”Œλ¦Ώ λ‚΄μ—μ„œ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜κ³  μ™ΈλΆ€μ—μ„œ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ˜ˆμ‹œ:
ν…Œμ΄λΈ”μ„ 좜λ ₯ν•˜κ³  μ‹Άμ§€λ§Œ 1 열은 선택 사항이며 데이터(fields[].field2)의 쑴재 여뢀에 따라 λ‹€λ¦…λ‹ˆλ‹€.

각 ν–‰μ—μ„œ ν™•μΈν•˜λŠ” 것은 λ¬Έμ œκ°€ μ—†μ§€λ§Œ 헀더에 λŒ€ν•΄ ν™•μΈν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

<table>
  <thead>
    <tr>
      <th>Head 1</th>
      <th>Head 2 (optional)</th>
      <th>Head 3</th>
    </tr>
  </thead>
{{#each fields}}
  <tr>
    <td>{{{field1}}}</td>
    {{#if field2}}<td>{{{filed2}}}</td>{{/if}}
    <td>{{{field3}}}</td>
  </tr>
{{/each}}
</table>

ν˜„μž¬ λ‚˜λŠ” λ„μš°λ―Έλ₯Ό μƒμ„±ν•˜λŠ” λΆˆμ•ˆμ •ν•œ λ„μš°λ―Έ κΈ°λŠ₯ "ν• λ‹Ή"을 μ‚¬μš©ν•©λ‹ˆλ‹€.

{{#each fields}}
  {{#if field2}}
    {{assign "helperVar" "<th>Head 2 (optional)</th>"}}
  {{/if}}
{{/each}}

Output with: {{{helperVar}}}

κ·ΈλŸ¬λ‚˜ 그것은 쒋은 해결책이 μ•„λ‹ˆλ©° #ifμ—μ„œ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

:+1:

@kpdecker ν…œν”Œλ¦Ώ 에 루프, if λ¬Έ 및 기타 μ—¬λŸ¬ 논리 ꡬ쑰λ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λΆ„λͺ…νžˆ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” 것은 ν…œν”Œλ¦Ώμ—μ„œ _λ„ˆλ¬΄_ λ§Žμ€ λ…Όλ¦¬μž…λ‹ˆκΉŒ? λ‹€λ₯Έ κΈ°λ³Έ λ„μš°λ―Έμ— λ‹¨μˆœνžˆ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” κΈ°λŠ₯보닀 훨씬 더 λ§Žμ€ 논리가 ν¬ν•¨λ˜μ–΄ μžˆλŠ” κ²½μš°μ—λŠ” κ·Έ 결정에 λŒ€ν•œ 좔둠을 이해할 수 μ—†μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  11 λŒ“κΈ€

이것은 논리가 μ—†λŠ” ν…œν”Œλ¦Ώμ˜ μ „μ œμ— μœ„λ°°λ˜λ©° 이것이 μ–Έμ–΄ μˆ˜μ€€ ꡬ성이어야 ν•œλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ ꢌμž₯λ˜λŠ” μ ‘κ·Ό 방식은 μ»¨ν…μŠ€νŠΈ 생성 λ‘œμ§μ—μ„œ 이 데이터λ₯Ό κ³„μ‚°ν•˜κ³  ν…œν”Œλ¦Ώμ— μ „λ‹¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. ν…œν”Œλ¦Ώ μ–Έμ–΄λ‘œ κ΅¬ν˜„λœ ν•˜μœ„ 집합이 μ•„λ‹ˆλΌ 전체 μžλ°”μŠ€ν¬λ¦½νŠΈ μ–Έμ–΄λ₯Ό λ§ˆμŒλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ 훨씬 더 λ§Žμ€ μ œμ–΄κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

template({
  fields: fields,
  hasField2: _.any(fields, function(item) { return item.field2; })
});

λ‚˜λŠ” 이것이 ν…œν”Œλ¦Ώμ— 더 λ§Žμ€ 논리λ₯Ό λ„μž…ν•˜λŠ” 것이 μ•„λ‹ˆλΌ ν•΄λ‹Ή ν…œν”Œλ¦Ώμ— νŠΉμ •ν•œ λ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•œ 쒋은 κΈ°λŠ₯이라고 μƒκ°ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, λ‚΄ ν…œν”Œλ¦Ώ 쀑 2κ°œλŠ” λ™μΌν•œ 뢀뢄을 μ‚¬μš©ν•©λ‹ˆλ‹€. λΆ€λΆ„ λ²”μœ„ λ‚΄μ—μ„œ λ‹€λ₯Έ ν…œν”Œλ¦Ώμ— λŒ€ν•΄ λ‹€λ₯Έ 것듀이 좜λ ₯λ˜λ„λ‘ ν…œν”Œλ¦Ώ μˆ˜μ€€μ—μ„œ ν•΄λ‹Ή 뢀뢄에 일뢀 λ³€μˆ˜λ₯Ό 전달할 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

+1

+1

:+1:

:+1:

@kpdecker ν…œν”Œλ¦Ώ 에 루프, if λ¬Έ 및 기타 μ—¬λŸ¬ 논리 ꡬ쑰λ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λΆ„λͺ…νžˆ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” 것은 ν…œν”Œλ¦Ώμ—μ„œ _λ„ˆλ¬΄_ λ§Žμ€ λ…Όλ¦¬μž…λ‹ˆκΉŒ? λ‹€λ₯Έ κΈ°λ³Έ λ„μš°λ―Έμ— λ‹¨μˆœνžˆ λ³€μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” κΈ°λŠ₯보닀 훨씬 더 λ§Žμ€ 논리가 ν¬ν•¨λ˜μ–΄ μžˆλŠ” κ²½μš°μ—λŠ” κ·Έ 결정에 λŒ€ν•œ 좔둠을 이해할 수 μ—†μŠ΅λ‹ˆλ‹€.

+1

+1

+1

+1

블둝 λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ 라인을 따라 무언가λ₯Ό κ΅¬ν˜„ν•  수 있으며 여기에 λ¬Έμ„œν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
http://handlebarsjs.com/block_helpers.html#block -params

이것은 ν˜„μž¬ μ»¨ν…μŠ€νŠΈ μ™ΈλΆ€μ˜ 별도 λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—μ„œ μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμ— μ»¨ν…μŠ€νŠΈ 할당에 λŒ€ν•΄ 보닀 μΌκ΄€λœ λ™μž‘μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰