-
Notifications
You must be signed in to change notification settings - Fork 2
Data binding
ํ๋ ์์ํฌ ์์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฐ์ HTML ์ปจํธ๋กค๋ก ํธ์ํ๊ณ
์ฌ์ฉ์์ ์๋ต์ ์ก์
๋ฐ ๊ฐ ์
๋ฐ์ดํธ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌํ push/pull ๋ก์ง์ ์ง์ ์์ฑํ๋ ๊ฒ์ ๋ก์ ๋ฐฉ์์ด๋ฉฐ ์ค๋ฅ ๋ฐ์์ ์ฌ์ง๊ฐ ์์ต๋๋ค.

๊ตฌ์ฑ์์์ ์ผ๋ถ์ ์กฐ์จํ๋ ๋ฉ์ปค๋์ฆ์ธ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํฉ๋๋ค.
๋ค์ด์ด ๊ทธ๋จ์์ ๋ณผ ์ ์๋ฏ์ด 4๊ฐ์ง ํํ์ ๋ฐ์ธ๋ฉ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค.
๊ฐ ์์์ DOM๊ฐ์ ์๋ฐฉํฅ์ ๋ํ๋
๋๋ค.
์๋ ์์ ํ
ํ๋ฆฟ์๋ 3๊ฐ์ง ํ์์ด ์์ต๋๋ค.
app/hero-list.component.html (binding)
<li>{{hero.name}}</li>
<hero-detail [hero]="selectedHero""></hero-detail>
<li (click)="selectHero(hero)></li>
{{hero.name}} - <li> ํ๊ทธ ๋ด์ hero.name์ ์์ฑ ๊ฐ์ ํ์ถํฉ๋๋ค.
[hero] - selectedHero ๊ฐ์ ๋ถ๋ชจ์ธ HeroListComponent์์ ์์์ธ HeroDetailComponent์ hero ์์ฑ์ผ๋ก ์ ๋ฌํฉ๋๋ค.
(click) - ์ฌ์ฉ์๊ฐ hero๋ฅผ ํด๋ฆญํ๋ฉด ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ์ ๊ตฌ์ฑ์์์ seelectHero ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ngModel ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ์์ฑ ๋ฐ ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ์ ๋จ์ผ ํ๊ธฐ๋ฒ์ผ๋ก
๊ฒฐํฉํ๋ ์ค์ํ 4๋ฒ์งธ ํ์์
๋๋ค.
๋ค์์ HeroDetailComponet ํ
ํ๋ฆฟ์ ์์ ์
๋๋ค.
app/hero-detail.component.html (ngModel)
<input [(ngModel)]="hero.name">
์๋ฐฉํฅ ๋ฐ์ธ๋ฉ์์ ๋ฐ์ดํฐ ์์ฑ ๊ฐ์ ์์ฑ ๋ฐ์ธ๋ฉ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ์ฑ์์์ ์
๋ ฅ์์๋ก ์ด๋ํฉ๋๋ค.
์ฌ์ฉ์์ ๋ณ๊ฒฝ์ฌํญ์ ๊ตฌ์ฑ์์๋ก ๋ค์ ์ ๋ฌ๋์ด ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฑ๋ก ์ ๋ณด๋ฅผ ์ต์ ๊ฐ์ผ๋ก ์ฌ์ค์ ํฉ๋๋ค.
Angular๋ ๋ชจ๋ ์์ ๊ตฌ์ฑ์์๋ฅผ ํตํด ์์ฉํ๋ก๊ทธ๋จ ๊ตฌ์ฑ์์ ํธ๋ฆฌ์ ๋ฃจํธ์์
Event Cycle๋ง๋ค ํ ๋ฒ ์ฉ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํ
ํ๋ฆฟ๊ณผ ํด๋น ๊ตฌ์ฑ์์๊ฐ์ ํต์ ์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๋ถ๋ชจ / ์์๊ฐ์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๋ถ๋ชจ ๊ตฌ์ฑ์์์ ํ์ ๊ตฌ์ฑ ์์๊ฐ์ ํต์ ์๋ ์ค์ํฉ๋๋ค.
