Angular.js: ngRepeat with DL / DD / DT

์— ๋งŒ๋“  2013๋…„ 01์›” 26์ผ  ยท  76์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/angular.js

์–ธ์ œ(๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ?) ngRepeat๊ฐ€ ์ •์˜ ๋ชฉ๋ก์„ ์ฒ˜๋ฆฌํ•  ์‹œ๊ฐ„ ํ”„๋ ˆ์ž„์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ: ํ˜„์žฌ ngRepeat๋Š” ๋‹จ์ผ ์š”์†Œ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ HTML์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ <dl> ์™€ ๊ฐ™์€ ์ •์˜ ๋ชฉ๋ก์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ์š”? ์ •์˜ ๋ชฉ๋ก์€ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ๋ชฉ๋ก ํ•ญ๋ชฉ์„ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ๋ฅผ ์ฝ์œผ๋ฉด Angular๊ฐ€ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด ์–ธ์ œ ๊ตฌํ˜„๋ ์ง€์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์†Œ ์•ˆ์ •์ ์ธ ๋ถ„๊ธฐ๊ฐ€ ์žˆ๋‹ค๋ฉด? ๊ธฐ์กด ์†”๋ฃจ์…˜์€ ํ˜„์žฌ ํ‘œ์ค€์— ๋ฐ˜ํ•˜์—ฌ _๋งค์šฐ_ ํ•ดํ‚คํ•˜๊ณ  IE/๋“ฑ์—์„œ ์ฝ”๋“œ๋ฅผ ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ?

ํŽธ์ง‘ : "๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ๋ถ„๊ธฐ"๋ž€ ์ฝ”๋“œ๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ๋ณ‘ํ•ฉ๋  ๋•Œ๊นŒ์ง€ ๋‚ด ์‚ฌ์ดํŠธ์—์„œ ๋ถ„๊ธฐํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„๊ธฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ํ‘œํ˜„์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :)

$compile feature

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์˜ˆ. ๋ฐฉ๊ธˆ ๋„์ฐฉํ•œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. e46100f7097d9a8f174bdb9e15d4c6098395c3f2

์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  76 ๋Œ“๊ธ€

๋‘ ๋ฒˆ์งธ ์ด๊ฒƒ. ๋‚˜๋Š” ์ž ์‹œ ๋™์•ˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@IgorMinar ๋Š” ์ฃผ์„ ๊ธฐ๋ฐ˜ ng-repeat(https://github.com/angular/angular.js/pull/1646)์— ๋Œ€ํ•ด ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์ฃผ์„์ด ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ์žฌ์ƒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿด ๊ฐ€๋Šฅ์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ. ๋Œ€์‹  ๊ทธ๋“ค์€ "์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ๋ฐ˜๋ณต ํƒœ๊ทธ" ๋˜๋Š” "์‹œ์ž‘-๋ฐ˜๋ณต ๋ฐ ๋ ˆ์ด๋ธ”์„ ๋ฐ˜๋ณตํ•  ์š”์†Œ ์ˆ˜"๊ฐ€ ์žˆ๋Š” ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

{{ }}์™€ ๊ฐ™์€ ์Œ ์•ˆ์— ํ…œํ”Œ๋ฆฟ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์•„๋งˆ๋„:
{{! ng-repeat = "foo in l"

ํ‘ธ

{{ }}

!}}

๊ด€๋ จ ๋ฉ”๋ชจ์—์„œ ๋‘ ๋ฒˆ์งธ ๋ณด๊ฐ„ ํ˜•์‹์— ํฐ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๊ฐ€ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
html ๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ƒ์„ฑํ•˜์ง€๋„ ์•Š์€ {{{ }}}์™€ ๊ฐ™์ด
์ƒˆ๋กœ์šด ์ŠคํŒฌ?

2013๋…„ 1์›” 29์ผ ํ™”์š”์ผ ์˜คํ›„ 12์‹œ 38๋ถ„, Pete Bacon Darwin <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@IgorMinar https://github.com/IgorMinar ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์„ ๊ธฐ๋ฐ˜ ng-repeat (#1646https://github.com/angular/angular.js/issues/1646)
๊ทธ๋Ÿฌ๋‚˜ ์ฃผ์„์ด ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ์žฌ์ƒ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ทธ๋“ค์€ ๋Œ€์ฒด ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„
"์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ ๋ฐ˜๋ณต ํƒœ๊ทธ" ๋˜๋Š” "์‹œ์ž‘-๋ฐ˜๋ณต ๋ฐ ์ˆ˜
๋ ˆ์ด๋ธ”์„ ๋ฐ˜๋ณตํ•  ์š”์†Œ"

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -12856484์—์„œ ํ™•์ธํ•˜์„ธ์š”.

๋ฐฉ๊ธˆ ๋ฐฐ์—ด์˜ ๊ฐœ์ฒด๋‹น ๋‘ ๊ฐœ์˜ 'td' ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด +1์ž…๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ์ด ๋™์ผํ•œ ์ œํ•œ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค.

:์—„์ง€์†๊ฐ€๋ฝ:

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "ng-repeat-children"์ด ํ˜„์žฌ ์š”์†Œ๊ฐ€ ์•„๋‹Œ ์ž์‹๋งŒ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ "ng-omit-tag"(ํ˜„์žฌ ํƒœ๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ์ž์‹์„ ์ œ์ž๋ฆฌ์— ๋‚จ๊ฒจ๋‘ )์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ng-repeat์™€ ํ•จ๊ป˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋œ ์ˆ˜๋งŽ์€ ์ž˜๋ชป๋œ ๋งˆํฌ์—…์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ์˜ ์ค‘์ธ ์ œํ•œ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ถ€๋ชจ ์š”์†Œ์— ng-repeat๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? http://jsfiddle.net/JyWdT/13/
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ๋ฐ”์ด์˜ฌ๋ฆฐ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

lgalfaso, ๊ท€ํ•˜์˜ ๋ฐ”์ด์˜ฌ๋ฆฐ์€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ •์˜๋กœ ์—ฌ๋Ÿฌ ์ •์˜ ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ถœ๋ ฅ์€ ์—ฌ๋Ÿฌ ์ •์˜๊ฐ€ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ •์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ์ œ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด "td" ์š”์†Œ ์Œ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[{name:dan, age:15}, {name:steve, age:21}]

์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<tr><td>dan</td><td>15</td><td>steve</td><td>21</td></tr>

ํ˜„์žฌ๋กœ์„œ๋Š” Angular๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

tr ์š”์†Œ์— ng-repeat๋ฅผ ๋„ฃ์–ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

http://plnkr.co/edit/lJvkOpz0NnKWcfEeM4lE?p=preview

2013๋…„ 4์›” 21์ผ ์ผ์š”์ผ ์˜คํ›„ 2์‹œ 24๋ถ„์— ziles [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

lgalfaso, ๊ท€ํ•˜์˜ ๋ฐ”์ด์˜ฌ๋ฆฐ์€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ •์˜ ๋ชฉ๋ก์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ •์˜. ์›ํ•˜๋Š” ์ถœ๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ •์˜ ๋ชฉ๋ก์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ •์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
์ •์˜.

๋˜๋Š” ์ œ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ํ•œ ์Œ์˜ "td" ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด.
๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[{ ์ด๋ฆ„:๋‹จ , ๋‚˜์ด:15 }, { ์ด๋ฆ„:์Šคํ‹ฐ๋ธŒ , ๋‚˜์ด:21 }]

์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ15์Šคํ‹ฐ๋ธŒ21

ํ˜„์žฌ๋กœ์„œ๋Š” Angular๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -16716788์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

์•„, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋Œ“๊ธ€์€ ๋ฌด์‹œํ•˜์„ธ์š”.
2013๋…„ 4์›” 21์ผ ์˜ค์ „ 9:09 "jason turim" jason. [email protected] ์€ ๋‹ค์Œ

tr ์š”์†Œ์— ng-repeat๋ฅผ ๋„ฃ์–ด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

http://plnkr.co/edit/lJvkOpz0NnKWcfEeM4lE?p=preview

2013๋…„ 4์›” 21์ผ ์ผ์š”์ผ ์˜คํ›„ 2์‹œ 24๋ถ„์— ziles [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

lgalfaso, ๊ท€ํ•˜์˜ ๋ฐ”์ด์˜ฌ๋ฆฐ์€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์ •์˜ ๋ชฉ๋ก์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ •์˜. ์›ํ•˜๋Š” ์ถœ๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ •์˜ ๋ชฉ๋ก์ด ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ •์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
์ •์˜.

๋˜๋Š” ์ œ ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ํ•œ ์Œ์˜ "td" ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฐ์—ด.
๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[{ ์ด๋ฆ„:๋‹จ , ๋‚˜์ด:15 }, { ์ด๋ฆ„:์Šคํ‹ฐ๋ธŒ , ๋‚˜์ด:21 }]

์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹จ15์Šคํ‹ฐ๋ธŒ21

ํ˜„์žฌ๋กœ์„œ๋Š” Angular๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -16716788์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋ฐฉ๊ธˆ dl / dt + dd ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ng-repeat-children(๋˜๋Š” ng-repeat-inner)์ด ๋ˆ„๋ฝ๋œ ํ•„์ˆ˜ ์ง€์‹œ์–ด์ž„์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

+1

์ƒˆ๋กœ์šด ์ง€์‹œ๋ฌธ ng-repeat-inner์— ๋Œ€ํ•œ ์ œ์•ˆ. ์ด ์ œ์•ˆ์ด ๊ดœ์ฐฎ๋‹ค๋ฉด ๋ชจ๋“  ๊ฐ€์ด๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ng-repeat ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ HTML ์ฃผ์„์— ํ•ด๋‹น ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<dl>
  <!-- ng-repeat="(name, definition) in myList" -->
  <dt>{{name}}</dt>
  <dd>{{definition}}</dd>
  <!-- /ng-repeat -->
</dl>

๋ฐ˜๋ณต๋˜๋Š” ๋ธ”๋ก์˜ ์‹œ์ž‘๊ณผ ๋์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋‹ฌ์„ฑ๋˜๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ( @ProLoser์—์„œ <!-- /ng-repeat --> ์ œ์•ˆ), HTML ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์šฐ์•„ํ•œ ์†”๋ฃจ์…˜์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ถ•์†Œ์ž๊ฐ€ ์ฃผ์„ ๋ฐ ์ฃผ์„๊ณผ ๊ด€๋ จ๋œ ๊ธฐํƒ€ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ €๋Š”
์ด๊ฒƒ์ด ํ›Œ๋ฅญํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ng-repeat๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.
ng-repeat-single-root ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?
true๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฃจํŠธ ์—†์ด ng-repeat๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์š”์†Œ? ์˜ˆ๋ฅผ ๋“ค์–ด:

{NS}
{NS}

๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค:

1
1
2
2
์‚ผ
์‚ผ

2013๋…„ 4์›” 23์ผ ํ™”์š”์ผ ์˜คํ›„ 3์‹œ 54๋ถ„, Mani Tadayon [email protected]์ž‘์„ฑ :

๋™์ผํ•œ ng-repeat ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํ—ˆ์šฉ
ํ•ด๋‹น ์ง€์‹œ๋ฌธ์ด ์›๋ณธ ๊ฒŒ์‹œ๋ฌผ๋กœ HTML ์ฃผ์„์— ์‚ฌ์šฉ๋˜๋„๋ก
์ œ์•ˆ.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{{์ด๋ฆ„}}
{{์ •์˜}}

๋ธ”๋ก์˜ ์‹œ์ž‘๊ณผ ๋์ด ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋ฐ˜๋ณต๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ
๋‹ฌ์„ฑ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋‚˜๋Š”๋‚ด ์˜ˆ์—์„œ),
๊ทธ๋Ÿฌ๋‚˜ HTML ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์šฐ์•„ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -16891970์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

maxcan, ์†Œ์Šค html์„ ์œ ํšจํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— "๋‹จ์ผ ๋ฃจํŠธ"์˜ ์žฅ์ ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ด๋‹น ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด "dl" ํƒœ๊ทธ ์•ˆ์— ๋‹ค๋ฅธ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค... ์˜ˆ๋ฅผ ๋“ค์–ด ์›ํ•˜๋Š” ๊ณ ์ • ์ •์˜ ๋™์  ์ •์˜ ๋ฃจํ”„ ์•ž์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. lgalfaso์˜ ์†”๋ฃจ์…˜์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

@maxcan ์€ ํฐ ์žฌ์ž‘์—…์ด๋‚˜ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ์ด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์€ ์ด ์†์„ฑ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ์žฌ์ปดํŒŒ์ผ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. [๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๋„ ์žฌ์ปดํŒŒ์ผ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค]

๋‚˜๋Š” @bowsersenior ์˜ ์ œ์•ˆ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ๋‹ซ๋Š” ์ฝ”๋ฉ˜ํŠธ๋กœ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค: <!-- /ng-repeat -->

ํฅํ–‰์— ๋ถ€๋„๋Ÿฌ์šด ์ผ์ด๋‹ค. ์•„๋ฌดํŠผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์ง€์ง€ํ•ฉ๋‹ˆ๋‹ค
@lgalfaso ์˜ ์†”๋ฃจ์…˜, ์ง€์‹œ๋ฌธ์„ div์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ 
๊ทธ๋ƒฅ ๋Œ“๊ธ€..

2013๋…„ 4์›” 24์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 1์‹œ 58๋ถ„์— Dean Sofer [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

@bowsersenior https://github.com/bowsersenior ์˜ ์ œ์•ˆ์„ ์ข‹์•„ํ•˜์ง€๋งŒ
๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ซ๋Š” ์ฝ”๋ฉ˜ํŠธ๋กœ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค:

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -16964155์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋‚˜๋Š” <!-- /ng-repeat --> ๊ฐ€ HTML ์ฃผ์„ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ๋” ๋‚˜์€ ๋‹ซ๋Š” ํƒœ๊ทธ๋ผ๋Š” @ProLoser ์™€ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ angular๋Š” HTML ์ฃผ์„์—์„œ ์ง€์‹œ๋ฌธ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฏ€๋กœ HTML ์ฃผ์„์„ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž ์žฌ์ ์ธ ์†”๋ฃจ์…˜์œผ๋กœ ํ๊ธฐํ•  ์ˆ˜๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ Angular ๊ฐœ๋ฐœ์ž๋Š” ์ด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์งˆ๋ฌธ(์›๋ž˜ ํฌ์Šคํ„ฐ์—์„œ ์ง€์ ํ•œ ๋Œ€๋กœ)์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HTML ์ฃผ์„์„ ์‚ฌ์šฉํ•  ๊ณ„ํš์ž„์„ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ํ•˜์ง€ ์•Š๊ณ  ์ด๊ฒƒ์„ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ํ•œ ๊ทธ๊ฒƒ๋“ค์„ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ.

2013๋…„ 4์›” 24์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 2์‹œ 41๋ถ„, Mani Tadayon [email protected] ์ž‘์„ฑ :

๋‚˜๋Š” @ProLoser https://github.com/ProLoser์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. HTML ์ฃผ์„ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ๋” ๋‚˜์€ ๋‹ซ๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜
์ฐธ๊ณ , ๊ฐ๋„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HTML ์ฃผ์„์—์„œ ์ง€์‹œ๋ฌธ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
HTML ์ฃผ์„์ด ์ด์— ๋Œ€ํ•œ ์ž ์žฌ์ ์ธ ์†”๋ฃจ์…˜์œผ๋กœ ํ๊ธฐ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ. ํ•ต์‹ฌ Angular ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HTML ์ฃผ์„์„ ์‚ฌ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.
์งˆ๋ฌธ(์›๋ž˜ ํฌ์Šคํ„ฐ์—์„œ ์ง€์ ํ•œ ๋Œ€๋กœ):

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -16969268์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

@lgalfaso ์˜ ng-repeat-inner์— +1. ๋‚˜๋Š” ๋งˆ์นจ๋‚ด ์ด๊ฒƒ์„ ๋๋‚ด๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์›ํ•œ๋‹ค.

๋…น์•„์›ƒ์€ ์ฃผ์„์œผ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋…น์•„์›ƒ์—์„œ dl ํƒœ๊ทธ๋กœ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์„ ์ด์‹ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ์˜๊ฒฌ์ด๋ฏ€๋กœ @mhevery ๋˜๋Š” @IgorMinar ์˜ ์ž…๋ ฅ ์—†์ด ์†Œ๊ธˆ ํ•œ
์ฃผ์„์œผ๋กœ ng-repeat ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ์—ฐํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  $compiler๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด ์ž์—ฐ์Šค๋Ÿฌ์›Œ ๋ณด์ด์ง€ ์•Š์œผ๋ฏ€๋กœ "์ฃผ์„ ์‚ฌ์ด" ์œ ํ˜•์˜ ์ง€์‹œ๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ง€์‹œ๋ฌธ์ด ์ฃผ์–ด์ง„ ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์–ด์ง„ ์š”์†Œ์˜ ์™ธ๋ถ€๋ฅผ ์ค‘์ฒฉํ•˜๊ณ  ์‚ดํŽด๋ณด๋Š” ๋ฐ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒํ•ด ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋Œ“๊ธ€/๋Œ“๊ธ€ ์—†์Œ์ด ๊ณ„์†๋˜๋Š” ๋…ผ๋ž€์˜ ์›์ธ์ด๋ผ๋ฉด ๋‘˜ ๋‹ค ๊ฐ€์งˆ ์ˆ˜๋Š” ์—†๋‚˜์š”? ์ด๋ ‡๊ฒŒ ํ”ํ•œ ๋ฌธ์ œ๊ฐ€ 3๊ฐœ์›” ์ด์ƒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๊ฐ€ ์ฃผ๋กœ ๊ตฌํ˜„์— ๋Œ€ํ•œ ๋…ผ๋ž€์œผ๋กœ ์ธํ•œ ๊ฒƒ์ด๋ผ๋ฉด, ๋” "์ตœ์ "์ธ ๊ฒƒ์„ ์•„๋ฌด ๊ฒƒ๋„ ์—†์ด ๋” ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ค์ œ๋กœ ๊ตฌํ˜„(๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ ์—…๋ฐ์ดํŠธ/์ถ”๊ฐ€)ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ng-repeat-inner๊ฐ€ ํŠน์ • ํ•ญ๋ชฉ "๋‚ด์—์„œ" ์ผ๋ จ์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ด๋ฏธ ์ผ์ข…์˜ ๋…์  ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์„ ๊ตฌํ˜„์ด ๋” ๋‹ค์žฌ๋‹ค๋Šฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(๊ฐ€๋Šฅํ•˜๋ฉด ํ”ผํ•˜๊ณ  ์‹ถ์€ ์ถ”๊ฐ€ 1/2์ค„์˜ ์ฝ”๋“œ์ผ์ง€๋ผ๋„) ์š”์†Œ ๋‚ด ์ง€์‹œ๋ฌธ.

HTML ์ฃผ์„ ์‚ฌ์šฉ ์—ฌ๋ถ€์˜ ๋ฌธ์ œ๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋ฏธํ•ด๊ฒฐ ์ƒํƒœ์˜€๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Angular ์œ ์ง€ ๊ด€๋ฆฌ์ž์˜ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋†“์นœ ๊ฒฝ์šฐ ์ฃผ์„ ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต๊ธฐ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ๋Š” https://github.com/angular/angular.js/pull/1646์„ ์ฐธ์กฐํ•˜์„ธ์š”. @lgalfaso ์†”๋ฃจ์…˜์€ ์ด ์‹œ์ ์—์„œ ํ›จ์”ฌ ๋” ์œ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ง€์ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค #1646 . @mhevery์˜ ํ† ๋ก  ์— ์ฝ”๋“œ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  "๋” ๋‚˜์€ ๋ฐฉ๋ฒ•"์„ ์ œ์•ˆ

"๋” ๋‚˜์€ ๋ฐฉ๋ฒ•"์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•˜์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!

ํ•ต์‹ฌ ํŒ€์˜ ํ•ฉ์˜๋Š” ํ˜„์žฌ ์ด ๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ์˜ˆ์ œ์—๋Š” 2๊ฐœ์˜ td ํƒœ๊ทธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” repeater๊ฐ€ ์ž„์˜์˜ ์ˆ˜์˜ ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต์„ ํ—ˆ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋ฒ•์ด์ง€๋งŒ ์˜๋„์ ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ๋ฅผ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐ ํ…Œ์ด๋ธ” ํ–‰, ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์˜คํ”„๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜๋ ค๊ณ  ํ•˜๋ฏ€๋กœ ๋ฆฌํŒฉํ† ๋งํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ A:

<dl>
  <dt ng-repeat="(name, definition) in myList">{{name}}</dt>
  <dd ng-repeat-next>{{definition}}</dd>
  <dd ng-repeat-next>{{definition}}</dd>
</dl>

๊ตฌ๋ฌธ B:

<dl>
  <dt ng-repeat-start="(name, definition) in myList">{{name}}</dt>
  <dd>{{definition}}</dd>
  <dd ng-repeat-end>{{definition}}</dd>
</dl>

๊ตฌ๋ฌธ C:

<dl>
  <dt ng-repeat="(name, definition) in myList" ng-repeat-start>{{name}}</dt>
  <dd>{{definition}}</dd>
  <dd ng-repeat-end>{{definition}}</dd>
</dl>

๊ตฌ๋ฌธ D:

<dl>
  <dt ng-repeat="(name, definition) in myList" ng-repeat-group>{{name}}</dt>
  <dd ng-repeat-group>{{definition}}</dd>
  <dd ng-repeat-group>{{definition}}</dd>
</dl>

์žฅ๊ธฐ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์ด ๊ฐœ์„ ๋˜๋ฉด ์ƒˆ๋กœ์šด <template> ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ X:

<template>
  <dl>
    <ng repeat="(name, definition) in myList">
      <dt>{{name}}</dt>
      <dd>{{definition}}</dd>
      <dd>{{definition}}</dd>
    </ng>
  </dl>
</template>

์ด ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ PR์„ ์ž‘์„ฑํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠน์ • ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ์„ ํ˜ธ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

์ž…๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ๊ด€์ ์—์„œ ๊ตฌ๋ฌธ A๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์ฒฉ ๋ฃจํ”„์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

<dl>
  <dt ng-repeat="...">loop 1</dt>
  <dt ng-repeat="..." ng-repeat-next>loop 2</dt>
  <dd ng-repeat-next>is this within loop 2 or only loop 1</dd>
</dl>

๊ตฌ๋ฌธ B์™€ C๋Š” ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋‘ ๊ฐ€์ง€ ๋Œ€์•ˆ์„ ๋ชจ๋‘ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค(์‹ฌ์ง€์–ด ๊ตฌ๋ฌธ B๊ฐ€ ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋”๋ผ๋„)

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ตฌ๋ฌธ D์—๋Š” ๊ตฌ๋ฌธ A์™€ ๋™์ผํ•œ ์ค‘์ฒฉ ๋ฃจํ”„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆœ์ „ํžˆ ์ตœ์†Œํ•œ์˜ ํŽธ์ง€๋ฅผ ์จ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋ฉด B๋กœ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ€์žฅ ๋Œ€์นญ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ์  ๋Œ€์นญ์œผ๋กœ ์ธํ•ด ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๊ฐ€์žฅ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

lgalfasos์˜ ์˜๊ฒฌ์€ ํฅ๋ฏธ๋กœ์šด ๋”œ๋ ˆ๋งˆ๋ฅผ ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์˜ ์˜ˆ์—์„œ ์ค‘์ฒฉ ๋ฃจํ”„๊ฐ€ ๋‘ ๋ฒˆ์งธ๊ฐ€ ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ์žˆ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‚ด๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์—†๋Š” ํ•œ ๋ชจ๋“  ๋ฒ„์ „์˜ ๊ตฌ๋ฌธ์ด ์ด์ œ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

<template> ๋ž˜ํ•‘์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  @lgalfaso ๊ฐ€ ์ œ์•ˆํ•œ ng-repeat-inner ์™€ ๊ตฌ๋ฌธ X์˜ ng repeat ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋„ ๊ทธ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ <ng> ํƒœ๊ทธ๊ฐ€ DOM์˜ ์ผ๋ถ€๊ฐ€ ๋˜์ง€ ์•Š์•„ dl ์•„๋ž˜์˜ ์ž˜๋ชป๋œ ์ค‘์ฒฉ ๊ตฌ์กฐ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” B์— ํˆฌํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

X์˜ ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์ด DOM์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋‹ค์–‘ํ•œ ์ง€์‹œ๋ฌธ์„ ํ˜ธ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜ ๋”๋ฏธ ๋ž˜ํผ ์š”์†Œ <ng> ๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ์ž…๋‹ˆ๋‹ค ng-repeat-inner ์—๋งŒ ํŠน์ • ์‚ฌ์šฉ ์ผ€์ด์Šค์— ์ ์šฉ๋˜๋Š”, ng-repeat .

๊ตฌ๋ฌธ X ๊ฒฝ์šฐ, ์žฅ๊ธฐ ๋ชฉํ‘œ๋Š”, ๋‹จ์ง€ ๋” ์ผ๋ฐ˜์ ์ธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค ng-repeat-inner , ๋‚ด๊ฐ€ ๋Š๋ผ๋Š” ๊ทธ ng-repeat-inner ๋„ (* ์ „์ ์œผ๋กœ๋˜์ง€ ์•Š์Œ) ์ œ์•ˆ ๋œ A, B ์ค‘ ํ•˜๋‚˜๋ฅผ ๋”ฐ๋ผ ์ฑ„ํƒ๋˜์–ด์•ผํ•œ๋‹ค, ๋‹ค์Œ์— ๋Œ€ํ•œ C,D:

  1. ๊ตฌ๋ฌธ X์™€ ng-repeat-inner ๋Š” ๋ชจ๋‘ ๋™์ผํ•œ dom ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
    : ๊ตฌ๋ฌธ X๊ฐ€ ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ๋ผ๋ฉด ํ–ฅํ›„ ๋ฆฌํŒฉํ† ๋ง์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์œ ์‚ฌํ•˜๊ฒŒ ๊ตฌ์กฐ์ ์œผ๋กœ ์ •๋ ฌ๋˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ng-repeat-inner ์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
    : ์˜๋„๋Š” ๋‚ด๋ถ€ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ daegon123 @IgorMinar์˜ ๋‚˜์—ด ๊ตฌ๋ฌธ (ํฌํ•จ X)๊ณผ์˜ ์ฐจ์ด ng-repeat-inner ์‹ ํƒ์Šค๋Š” ์ž„์˜๋กœ ๋ณ„๊ฐœ์˜ ์šฉ๊ธฐ์—†์ด ์š”์†Œ์˜ ์ง‘ํ•ฉ์„ ๋ฐ˜๋ณต ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด table ๋˜๋Š” tbody ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ <tr> ๊ฐ€ ์žˆ๋Š” ๋™์•ˆ <tr> ์„ธํŠธ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐ˜๋ณตํ•  ์š”์†Œ์—๋Š” ng-repeat-inner ๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ๊ณ ์œ ํ•œ ๋ถ€๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

<table>
    <thead>...</thead>
    <tr ng-repeat-start="(name, definition) in myList">...</tr>
    <tr>...</tr>
    <tr ng-repeat-end>...</tr>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

๋˜๋Š” <dl> ๊ฐœ์ฒด๋‹น ์—ฌ๋Ÿฌ ์ •์˜

<dl>
    <dt ng-repeat-start="...">{{item.term1}}</dt>
    <dd>{{item.def1}}</dd>
    <dt>{{item.term2}}</dt>
    <dd>{{item.def2}}</dd>
    <dt>{{item.term3}}</dt>
    <dd ng-repeat-end>{{item.def3}}</dd>
</dl>

@es128 ๋Œ“๊ธ€๊ณผ ์ฝ”๋“œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋‚ด๊ฐ€ ng-repeat-inner ๋‚˜์—ด๋œ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ ์ค‘ ํ•˜๋‚˜์™€ ํ•จ๊ป˜ 'ํ—ˆ์šฉ'ํ•˜๋„๋ก ์ œ์•ˆํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ท€ํ•˜์˜ ์ฃผ์„์—์„œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ng-repeat-inner ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๊ถ๊ธˆํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋˜ ๋‹ค๋ฅธ ์˜๊ฒฌ์„ ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค - ๋‹ค์‹œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

ng-repeat-inner์˜ ๋ฌธ์ œ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<ul>
  <li>some static prefix item</li>
  <!-- repeat these nodes -->
    <li>{{ something }}</li>
    <li>{{ something else }}</li>
  <!-- repeat end -->
  <li>some static postfix item</li>
</ul>

์ธ์œ„์ ์ธ ์š”์†Œ(div์™€ ๊ฐ™์€)๋ฅผ ul(html ์‚ฌ์–‘์— ๋”ฐ๋ผ)์— ๋„ฃ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ng-repeat-inner๋Š” ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

btw ํ…œํ”Œ๋ฆฟ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ul๊ณผ li ์‚ฌ์ด์— ์ธ๊ณต ์š”์†Œ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ตฌ๋ฌธ X์— ๋„ˆ๋ฌด ์ง‘์ฐฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๊ฐ€ ๊ถ๊ทน์ ์œผ๋กœ ์ •ํ™•ํ•œ ๊ตฌ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋น ๋ฅด๊ณ  ๋”๋Ÿฌ์šด ์˜ˆ์ผ ๋ฟ์ด์ง€๋งŒ ์•„์ง ๋…ผ์˜ ์ค‘์ด์ง€๋งŒ ์—ฌ๊ธฐ์— ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜:

๊ตฌ๋ฌธ Y:

<ul>
  <li>some static prefix item</li>
  <template repeat="item in items">
    <li>{{ item.name }}</li>
    <li>{{ item.owner }}</li>
  </template>
  <li>some static postfix item</li>
</ul>

ng-repeat ๊ทธ๋ฃน์— id๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋“  ์ˆ˜์ค€์—์„œ ํ•ญ๋ชฉ์„ ์ž์œ ๋กญ๊ฒŒ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๊ฒƒ

<dl>
    <dt ng-repeat="item in items" ng-repeat-group="someId">{{item.term}}</dt>
    <dd ng-repeat-with="someId">{{item.definition}}</dd>
</dl>

์šฐ๋ฆฌ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์œ ์—ฐ์„ฑ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ C์˜ ์ œ์•ˆ๋œ ๊ตฌํ˜„์€ ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ์š”์†Œ ๋ฐ ์ง€์‹œ๋ฌธ์— ๋Œ€ํ•ด ์ด์™€ ๋™์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‰ฝ๊ฒŒ ํ—ˆ์šฉํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ž˜ํ–ˆ์–ด ๋ฃจ์นด์Šค! ๋‚˜๋Š” ๊ตฌ๋ฌธ C๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ €๋…์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ชจ๋“  ng-repeat ๋ฅผ ์ฃผ์„์œผ๋กœ ๋ฐ”๊พธ๋Š” transclusion์œผ๋กœ ์ธํ•ด ์ค‘์ฒฉ์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ng-repeat-start ์ฐพ๋Š” DOM์„ ๊ฐ€๋กœ์ง€๋ฅด์ง€ ๋ชปํ•˜๋ฉด ๋งค์นญ์„ ์œ„ํ•œ ng-repeat-end ์†์„ฑ์˜ ๊นŠ์ด๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

ํ ... ๋ญ”๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹์— ๋ฌธ์„œ๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.
http://plnkr.co/edit/sVilxKaNrhNM4JrkuQ5r?p=preview

์ค‘์ฒฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

Term: elastic
     Static term
     This definition should be repeated for every term: 'elastic' term
Term: par
     Static term
     This definition should be repeated for every term: 'par' term

๊ทธ๋ฆฌ๊ณ  ์ค‘์ฒฉ๋œ ๊ฒƒ์˜ ๊ฒฝ์šฐ:

Term: elastic
     Static term
Subterm: superelastic
     Static subterm
     This should be repeater for every subterm: 'super' subterm from 'elastic' term
Subterm: subelastic
     Static subterm
     This should be repeater for every subterm: 'sub' subterm from 'elastic' term
     This definition should be repeated for every term: 'elastic' term
Term: par
     Static term
Subterm: superpar
     Static subterm
     This should be repeater for every subterm: 'super' subterm from 'par' term
Subterm: subpar
     Static subterm
     This should be repeater for every subterm: 'sub' subterm from 'par' term
     This definition should be repeated for every term: 'par' term

๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@lrlopez ๋‹น์‹ ์ด ๋„ฃ์€ ์˜ˆ์ œ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ 23ํ–‰์— ์ถ”๊ฐ€ </dl> ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋งž์Šต๋‹ˆ๋‹ค. 23ํ–‰์— </dl> ๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ค‘์ฒฉ ๋œ ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ...

์ข‹์Šต๋‹ˆ๋‹ค. DOM์—์„œ ๋™์ผํ•œ ์ˆ˜์ค€์— ์žˆ๋Š” ๋‹ค์ค‘ ์š”์†Œ ์ง€์‹œ๋ฌธ์— ๋Œ€ํ•œ ์‹ค์ œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ PR์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

ng-repeat-inner ๋˜๋Š” ng-repeat-next์™€ ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์‹ค์ œ DOM ๋…ธ๋“œ์— ๋ฐ”์ธ๋”ฉ ๋™์ž‘์ด ์ œํ•œ๋˜๋Š” ์ˆ˜๋งŽ์€ ์ƒํ™ฉ ์ค‘ ํ•˜๋‚˜๋งŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ง€์‹œ๋ฌธ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํŒจ์น˜ํ•˜๋Š” ๋Œ€์‹  ์‹ค์ œ ํŠธ๋ฆฌ์—์„œ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋Š” ๊ฐ€์ƒ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ „์ฒด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ์•„์ด๋””์–ด๋Š” ๋น„์Šทํ•˜์ง€๋งŒ ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ๋˜๊ณ  ์—ฌ์ „ํžˆ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ๋“  ๋‹ซ์„ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ฃผ์„ ๋…ธ๋“œ ๊ตฌ๋ฌธ์„ ๋ฐœ๋ช…ํ•˜๋Š” ๋Œ€์‹  ๊ธฐ์กด HTML ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

SASS ์ž๋™ ํด๋ž˜์Šค์™€ ์œ ์‚ฌํ•œ ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

<div id="myComplexList">
    <ng-virtual ng-repeat="...">
        <a></a>
        <b></b>
        <c></c>
    </ng-virtual>
</div>

Result:

<div id="myComplexList">
    <a></a>
    <b></b>
    <c></c>
    <a></a>
    <b></b>
    <c></c>
    <a></a>
    <b></b>
    <c></c>
    ...
</div>

์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด์— +1ํ•˜์ง€๋งŒ ng-repeat-group๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

<ng-repeat-group="b in ches">
// group markup to be repeated here
</ng-repeat-group>

๋‚˜๋Š” ๊ฐ€์ƒ ๋…ธ๋“œ์˜ ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์ด ๋˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ธ๊ณต ์šฉ๊ธฐ์˜ ์ƒ์„ฑ์„ ์ œํ•œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ๊ฒฐ๊ณผ์˜ html์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ html ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ๊ฒฝ์šฐ ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ๋‹ด์„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ „:

<tr>
  <td ng-repeat-start>1</td>
  <td ng-repeat-end>2</td>
</tr>

(์—ฌ๊ธฐ์„œ ์ปจํ…Œ์ด๋„ˆ๋Š” [tr]์ž„)

์ œ์•ˆ๋œ ๊ฐ€์ƒ ๋…ธ๋“œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๋€๋‹ˆ๋‹ค.

<tr>
  <ng-virtual ng-repeat="...">
     <td>1</td>
     <td>2</td>
  </ng-virtual>
</tr>

์ค‘๋ณต ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ: ์ด ๋‘ ์ค„ ์ถ”๊ฐ€์กฐ์ฐจ๋„ ์ฝ”๋“œ๊ฐ€ ๋” ๊ธธ์–ด์ง€๋ฉด ์–ด๋–จ์ง€ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ์ฝ”๋“œ๊ฐ€ ํ˜„์žฌ ์–ด๋Š ์ˆ˜์ค€์˜ dom์— ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ง€๋ฃจํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์€ @es128 ์˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

<table>
<thead>...</thead>
    <tr ng-repeat-start="(name, definition) in myList">...</tr>
    <tr>...</tr>
    <tr ng-repeat-end>...</tr>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

๊ฐ€์ƒ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๋€๋‹ˆ๋‹ค.

<table>
<thead>...</thead>
    <ng-virtual ng-repeat="...">
        <tr">...</tr>
        <tr>...</tr>
        <tr>...</tr>
    </ng-virtual>
    <tr>...</tr>
    <tfoot>...</tfoot>
</table>

์ฒ˜์Œ 3๊ฐœ์˜ tr๊ณผ ๋งˆ์ง€๋ง‰ tr์˜ ๋ฐ˜๋ณต์€ ๊ฐ™์€ ์ˆ˜์ค€์— ์žˆ์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํžˆ ํ›‘์–ด๋ณด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€์œผ๋กœ ์˜ค์ธํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜ ์ž์‹ ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ž‘์—… ์ค‘์ธ ์ˆ˜์ค€์„ ์ง€๋ฃจํ•˜๊ฒŒ ๊ณ„์‚ฐ(์•„๋งˆ๋„ ์ž˜๋ชป๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Œ), ํŠนํžˆ ์ด๋Ÿฌํ•œ ํ•ญ๋ชฉ์ด ์ค‘์ฒฉ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ.

๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ํŠน์ • ๋ฒ„์ „์˜ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค(B ์ข…๋ฅ˜).

<ul>
  <li>some static prefix item</li>
  <li ng-repeat-block="(name, definition) in myList">{{ something }}</li>
  <li>{{ something else }}</li>
  <li ng-repeat-block-close>{{ something else }}</li>
  <li>some static postfix item</li>
</ul>

@stanvass ๊ท€ํ•˜์˜ ์ œ์•ˆ์€ @IgorMinar ๊ฐ€ ๊ตฌ๋ฌธ X๋กœ ๊ฒŒ์‹œํ•œ ๊ฒƒ์˜ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ง€์›์ด ๊ฑฐ๊ธฐ์— ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋‚ด๋ถ€ ์š”์†Œ๋งŒ ๋ฐ˜๋ณตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ng-repeat-start ๋ฐ ng-repeat-end ๋ฅผ ๋ชจ๋‘ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘๋ณต๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

<tr>
  <td ng-repeat-start ng-repeat-end>repeat this</td>
</tr>

์ด๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ng-repeat-single ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „.

<tr>
  <td ng-repeat-single>repeat this</td>
</tr>

@daegon123 ๋‹จ์ผ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

<tr>
  <td ng-repeat="...">repeat this</td>
</tr>

ng-repeat-start ๋˜๋Š” ng- repeat-end

@lgalfaso ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๊ตฌ๋ฌธ์— ๋„ˆ๋ฌด

์ด ๋ฌธ์ œ๋Š” ๋‹จ์ˆœํžˆ ํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ณ  ์š”์†Œ ์ง‘ํ•ฉ์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ฆ‰ <dt>..<dd>... - ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” ๋‹ค๋ฅธ ์ข‹์€ ์˜ˆ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ X๋Š” ๋ฐ˜๋ณต ์ค‘์ฒฉ์„ ์‹œ์ž‘ํ•˜๋ฉด ์ž˜ ์ •์˜๋œ ์œ ์ผํ•œ ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. Syntax AD์—์„œ ๋‹ค์Œ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<template>
  <dl>
    <ng repeat="book in myList">
      <dt ng-repeat="author in book.authors">{{author.name}}</dt>
      <dd>{{book.title}}</dd>
      <dd>{{book.description}}</dd>
    </ng>
  </dl>
</template>

๋” ๋‚˜์€ ์ œ์•ˆ์ž…๋‹ˆ๋‹ค.
My Blackberryยฎ์—์„œ ๋ณด๋‚ธ

------์›๋ฌธ-----
๋ณด๋‚ธ ์‚ฌ๋žŒ: daegon123 [email protected]
๋‚ ์งœ: 2013๋…„ 5์›” 6์ผ ์›”์š”์ผ 22:57:16
๋ฐ›๋Š” ์‚ฌ๋žŒ: angular/angular.jsangular. [email protected]
๋‹ต์žฅ: "angular/angular.js" [email protected]
์ œ๋ชฉ: Re: [angular.js] ngRepeat with DL / DD / DT (#1891)

ํ•˜๋‚˜์˜ ๋‚ด๋ถ€ ์š”์†Œ๋งŒ ๋ฐ˜๋ณตํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ng-repeat-start ๋ฐ ng-repeat-end ๋ฅผ ๋ชจ๋‘ ๊ฐ–๋Š” ๊ฒƒ์ด ์ค‘๋ณต๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

<tr>
  <td ng-repeat-start ng-repeat-end>repeat this</td>
</tr>

์ด๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ng-repeat-single ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „.

<tr>
  <td ng-repeat-single>repeat this</td>
</tr>

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/angular/angular.js/issues/1891#issuecomment -17524685

+1, ์ด๊ฒƒ์€ ํฐ ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค.

:+1: ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค! ์ง€๊ธˆ์€ <li> ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” angular๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ํ•ด๋‹น ๋งˆํฌ์—…์„ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

#2783์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ• ๊นŒ์š”?

์˜ˆ. ๋ฐฉ๊ธˆ ๋„์ฐฉํ•œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. e46100f7097d9a8f174bdb9e15d4c6098395c3f2

์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ„๋‹จํ•œ ์˜ˆ์—์„œ <TypeError: Object #<Text> has no method 'hasAttribute'> ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

<table>
        <tr ng-repeat-start="value in [1,2,3,4]">I get repeated</tr>
        <tr ng-repeat-end>I also get repeated</tr>
    </table>

๋˜ํ•œ ๋ฌธ์ œ๋ฅผ gevgeny ์ƒํƒœ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
'hasAttribute' ๋ฉ”์„œ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค>

<tr>
                <td data-ng-repeat-start="column in selectedItem.Beds" class="text-center">Avail. Beds</td>
                <td data-ng-repeat-end>Extra Bed Spaces</td>
</tr>

#2783์€ ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ๊นŒ์š”?

{[{h: "1",
   o: [{h: "1.1",
        o: [{h: "1.1.1"},
            {h: "1.1.2"},
            {h: "1.1.3"}]},
       {h: "1.2",
        o: [{h: "1.2.1"},
            {h: "1.2.2"},
            {h: "1.2.3"}]},

....

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<h1>1</h1>
<h2>1.1</h2>
<h3>1.1.1</h3>
<h3>1.1.2</h3>
<h3>1.1.3</h3>
<h2>1.2</h2>
<h3>1.2.1</h3>
<h3>1.2.2</h3>
<h3>1.2.3</h3> 

๊ตฌ๋ฌธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@ChrisCinelli hgroup ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”

<h1>1</h1>
<hgroup>
    <h2>1.1</h2>
        <hgroup>
            <h3>1.1.1</h3>
            <h3>1.1.2</h3>
            <h3>1.1.3</h3>
        <hgroup>
    <h2>1.2</h2>
        <hgroup>
            <h3>1.1.1</h3>
            <h3>1.1.2</h3>
            <h3>1.1.3</h3>
        <hgroup>
<hgroup>

๋”ฐ๋ผ์„œ hgroup์€ HTML5( http://html5doctor.com/the-hgroup-element/ )์—์„œ ์ œ๊ฑฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋ฌธ์ œ๊ฐ€ ๋” ๋ณต์žกํ•˜๊ณ  ํ—ค๋” ํƒœ๊ทธ๊ฐ€ ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๊ณ  ๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•˜๋ฉฐ Angular์˜ ์„ ์–ธ์  ๋ทฐ ์ฒ ํ•™์„ ์ „ํ˜€ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค...

์ฐพ๊ณ  ์žˆ๋Š” ํŠน์ • ์ถœ๋ ฅ์— ๋Œ€ํ•ด CSS๋ฅผ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๊นŒ?
์นด์šดํ„ฐ?

๋ณด๋‹ค:
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Counters
http://css-tricks.com/almanac/properties/c/counter-increment/

2013๋…„ 6์›” 18์ผ ํ™”์š”์ผ ์˜คํ›„ 2์‹œ 46๋ถ„์— Chris Cinelli [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค .

๋”ฐ๋ผ์„œ hgroup์ด HTML5์—์„œ ์ œ๊ฑฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(
http://html5doctor.com/the-hgroup-element/ ) ๊ทธ ์˜†์— ๋‚ด๊ฐ€ ๊ทธ๋žฌ๋“ฏ์ด
๋ฌธ์ œ๊ฐ€ ๋” ๋ณต์žกํ•˜๊ณ  ํ—ค๋” ํƒœ๊ทธ๊ฐ€
์˜ˆ์‹œ.
์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•˜๊ณ  ๋‹ค์Œ์—์„œ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.
Angular์˜ ๋ชจ๋“  ์„ ์–ธ์  ๋ทฐ ์ฒ ํ•™...

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -19644594์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ—ค๋”๋ฅผ ์˜ˆ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค... ์‹ค์ œ๋กœ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ฐ ์ˆ˜์ค€์— ๋Œ€ํ•ด ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅธ ๋น„๊ต์  ๋ณต์žกํ•œ <div> ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ์ฐพ์€ ์œ ์ผํ•œ ์†”๋ฃจ์…˜์€ Javascript์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์„ ํ˜•ํ™”ํ•˜๊ณ  ๋‹ค๋ฅธ ์ˆ˜์ค€์— ๋Œ€ํ•ด ng-switch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ์ถ”๊ฐ€ div ์ˆ˜์ค€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ด ์†”๋ฃจ์…˜์—๋Š” ์˜ค๋ฒ„ํ—ค๋“œ(์ฆ‰, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์„ ํ˜•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU)๊ฐ€ ์žˆ์œผ๋ฉฐ HTML์€ ๋‚ด๊ฐ€ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ‘์ค„ ํ…œํ”Œ๋ฆฟ๋ณด๋‹ค ํ›จ์”ฌ ๋œ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๊ฐ ๋ ˆ๋ฒจ์— ๋Œ€ํ•œ ์ง€์‹œ๋ฅผ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์ข…๋ฅ˜์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด
๋‹น์‹ ์ด ์—ฌ๊ธฐ์—์„œ ๋งํ•˜๋Š” ๊ตฌ์กฐ, ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹จ์ง€ ๋นจ๋Œ€๋ฅผ ์žก๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๊ฒฝํ—˜์ƒ ng-switch๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ง€์‹œ๋ฌธ ๋ฐ ng-include์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๋ฐ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

2013๋…„ 6์›” 18์ผ ํ™”์š”์ผ ์˜คํ›„ 4์‹œ 27๋ถ„์— Chris Cinelli [email protected]์ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค .

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ช…ํ™•ํ•˜๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด ํ—ค๋”๋ฅผ ์˜ˆ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค ... ์‹ค์ œ๋กœ๋Š”
๊ฐ ๋ ˆ๋ฒจ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋น„๊ต์  ๋ณต์žกํ•œ div
๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.

์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ์ฐพ์€ ์œ ์ผํ•œ ์†”๋ฃจ์…˜์€ ๋‹ค์Œ์—์„œ ํŠธ๋ฆฌ๋ฅผ ์„ ํ˜•ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Javascript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์— ๋Œ€ํ•ด ng-switch๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด ์†”๋ฃจ์…˜์—๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํ˜•ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU
๊ตฌ์กฐ) ๋ฐ HTML์€
๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ‘์ค„ ํ…œํ”Œ๋ฆฟ...

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ Gi tHubhttps://github.com/angular/angular.js/issues/1891#issuecomment -19650391์—์„œ ํ™•์ธํ•˜์„ธ์š”.
.

๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. http://d.pr/i/GSX4
๊ฑฐ์˜ ์งง์€ ๋ ˆ์ด๋ธ”(1.xx x), ์„ค๋ช…, ํ™•์ธ ํ‘œ์‹œ์˜ ์ˆ˜ ๋“ฑ์€ db์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
์ด ๋ถ€๋ถ„์„ Angular๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ต์…˜์„ ํƒ์ƒ‰ ์ค‘์ด์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ฃผ์‚ฌ์œ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋ณด๊ธฐ๋Š” ์ƒ๋‹นํžˆ ๋…ผ๋ฆฌ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ƒํ™ฉ์„ ๋น„๊ต์  ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์ž˜ ์ดํ•ดํ•œ๋‹ค๋ฉด ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ์ˆ˜์ค€์„ ๊นจ์•ผํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ๋” ์ง€์ €๋ถ„ํ•˜๊ณ  ๋œ ์‘์ง‘๋˜๊ณ  ๋œ ์ฝ๊ธฐ ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด ํŒจ๋„์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋…ผ๋ฆฌ๊ฐ€ ์™„์ „ํžˆ ๋ณด๊ธฐ์™€ ๊ด€๋ จ๋˜๊ณ  ์ด ๋ณด๊ธฐ์™€ ๋งค์šฐ ๊ตฌ์ฒด์ ์ผ ๋•Œ ๋‹ค๋ฅธ ํŒŒ์ผ(๋ชจ๋“ˆ/์ปจํŠธ๋กค๋Ÿฌ)์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? IMHO, ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(ํ˜„์žฌ ๊ตฌํ˜„ ์ค‘์ž…๋‹ˆ๋‹ค).

  • ๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋ธ์„ ๋ทฐ์— ์ „๋‹ฌ

๋ฌผ๋ก  ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ div๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  CSS๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์ด Angular์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ Angular๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ•˜๊ณ  ์šฐ์•„ํ•œ์ง€ ๋ฐฉํ•ด๊ฐ€ ๋œ๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค.

๋‚˜๋Š” KnockoutJS์—์„œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ์ฐพ์•˜๋Š”๋ฐ, ์ด๋Š” html ์š”์†Œ <div data-bind="foreach: ..."> ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ "์ปจํ…Œ์ด๋„ˆ ์—†๋Š” ์ œ์–ด ํ๋ฆ„ ๊ตฌ๋ฌธ", <!-- ko foreach: ... --><!-- /ko --> ์— ๋Œ€ํ•œ ๋‘ ๋ฐ”์ธ๋”ฉ์ด ๋ชจ๋‘ ๋งค์šฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Angular๋Š” @bowsersenior๊ฐ€ ์ œ์•ˆํ•œ ๊ตฌ๋ฌธ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ ์˜ต์…˜ ์„ธํŠธ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Knockout์˜ "์ปจํ…Œ์ด๋„ˆ๋ฆฌ์Šค" ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
http://knockoutjs.com/documentation/foreach-binding.html

@mg1075 ๊ฐ€์ƒ ๊ตฌ๋ฌธ์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค.
KnockoutJS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด dd ๋ฐ ์ค‘์ฒฉ ์ปฌ๋ ‰์…˜์„ ๋” ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: http://stackoverflow.com/questions/20062032/nested-table-using-ng-repeat

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰