๋ฒ์์ ์ฐ๊ฒฐ๋ ๋ ๊ตฌ์ฑ ์์์ ์ง์๋ฌธ ์ปจํธ๋กค๋ฌ ์ด๋ฆ์ ๋ํด ์ผ๊ด๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. https://github.com/angular/angular.js/issues/10007#issuecomment -166704255 ์ฐธ์กฐ
ํ์ฌ ์ฐ๋ฆฌ๋ ๊ตฌ์ฑ ์์์ ์ ์ ์ด๋ฆ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ด์์ ์ด์ง ์์ต๋๋ค
a) ๊ตฌ์ฑ ์์ ์ด๋ฆ์ ํ
ํ๋ฆฟ์์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธธ๊ณ ๋ค๋ฃจ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
b) ์ปจํ
์คํธ ๊ฐ ์ปจํธ๋กค๋ฌ์ธ Angular 2์์ ์ฌ์ฉํ ํ
ํ๋ฆฟ์ ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์ ๋ ๋ณต์กํฉ๋๋ค.
์ด๋ฆ์ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ๋ชจ๋ ๊ตฌ์ฑ ์์์ ๋ํด ๋์ผํด์ผ ํฉ๋๋ค.
2) $
๋ก ์์ํด์ผ ํฉ๋๋ค.
3) ์งง์์ผ ํฉ๋๋ค(2-4์).
๋ํ ์ด๋ฆ์ ๋ฒ์์ ์ค์ ๋ก ๊ฒ์๋๋ ๋ด์ฉ์ ๋ํ๋ด์ผ ํฉ๋๋ค.
์ด์ ์ ์ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
vm
- ์ด๊ฒ์ ๋ง์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ด๋ฆ์ด์ง๋ง ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ๋์ "๋ณด๊ธฐ ๋ชจ๋ธ"์ธ ๊ฒ์ ์๋๋๋ค.$comp
- ์ด๊ฒ์ ํ์ ํ์ฌ ์ ์์ด์ง๋ง ๋น๊ต์ ํผ๋๋ ์ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ์งง์ง ์์ต๋๋ค.$ctrl
- ์
๋ ฅ ConTROL ์์์ ํผ๋๋ ์ ์์ต๋๋ค.$this
- ์ปจํ
์คํธ๊ฐ ์ฌ์ ํ ์ค์ ๋ก ๋ฒ์์ด๊ธฐ ๋๋ฌธ์ ์ปจํธ๋กค๋ฌ๋ ํ
ํ๋ฆฟ์์ ์ค์ ๋ก this
๊ฐ ์๋๋๋ค.c) ํ๋ก๊ทธ๋๋จธ๋ isolate:false
๋ฅผ ์ฌ์ฉํ๊ณ ์กฐ์ ์ปจํธ๋กค๋ฌ์ ์ง์ ์ก์ธ์คํ๋ ค๋ ์ ํน์ ๋ฐ์ต๋๋ค.
@drpicox - ์ด ๋์ฐ๋ฏธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ ๊ตฌ์ฑ ์์์ ๋ํด isolate: false
๋ฅผ ๊ธ์งํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๋ค์์ ๊ณ ๋ คํ ํ ๋์ํฉ๋๋ค.
isolate: true
์ ํ์ด 'E'์ผ ๋: ์ ์๊ฒ๋ $ctrl ํ๊ธฐ๋ฒ์ด ์์ ํ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ง์ ํ ๊ตฌ์ฑ ์์์
๋๋ค.isolate: false
when limits is 'A': ๋์๊ฒ ๊ทธ๋ค์ _decorators_, ๊ธฐ์กด ๊ตฌ์ฑ ์์์ ์ผ์ข
์ธ ์ธํธ์์
๋๋ค. ์ด ๊ฒฝ์ฐ $ctrl์ด ์ถฉ๋ํ๋ฏ๋ก ํ์ฌ ๋ช
๋ช
๋ฒ์ ๊ด์ฐฎ์ต๋๋ค.๊ทธ๋ฌ๋ ๋๋ ๋ ๋ฒ์งธ ๊ฒฝ์ฐ๊ฐ ์ง์๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค. _decorators_๋ ๋น๋ฒํ์ง ์๊ณ ์ผ๋ฐ์ ์ผ๋ก ๋ฎ์ ์์ค์ด๋ฉฐ ์ฃผ๋์ด์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ isolate: false
๊ธ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค๋ฅธ ์๊ฐ์ผ๋ก _decorators_์ ๋ํด ํ์ฌ ์ํฐํฐ์ 'E' ๊ตฌ์ฑ ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๊ฐ์ ธ์ค๋ ํจ์๋ ํนํ ํ์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ผ๋ฐ _decorators_๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋น์ ์ด ์ฐพ๊ณ ์๋ ์ธํฐํ์ด์ค์ ์ข ๋ฅ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค).
๋๋ $cmp
์ ์ข์ํ์ง๋ง $comp
์ด ๋ ๋ช
ํํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ ๊ฒ์ ์ฐพ์ต๋๋ค.
๋๋
$cmp
์ ์ข์ํ์ง๋ง$comp
์ด ๋ ๋ช ํํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ ๊ฒ์ ์ฐพ์ต๋๋ค.
$comp
์ข์์. ์ ๋ $cmp
๋ฅผ ๋ณผ ๋๋ง๋ค "๋น๊ต"๋ฅผ ์๊ฐํฉ๋๋ค.
๋ค๋ฅธ ์ ์: ๊ตฌ์ฑ ์์ ์ด๋ฆ์ ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์: ์ฌ์ฉ์ ํ๋กํ -> scope.userProfile
@tabanliviu ํ์ฌ master
์์ ๊ทธ๋ ๊ฒ ํ๊ณ ์์ง๋ง @petebacondarwin ์ ๋ฐ๋ก ์ด ๋ฌธ์ ์ ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์์ ์ผ๋ฐ ์ด๋ฆ์ด ๋ ๋์ ์ด์ ์ ๋ํด ์ธ๊ธํ์ต๋๋ค.
@mgol :+1: ํฐ์ผ์ ์ฝ์ ๋ ๊ทธ๊ฑธ ๊ฐ๊ณผํ ๊ฒ ๊ฐ์์. ์ด ๋ณ๊ฒฝ์ ngUpgrade ๋ฌธ์ ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๊น? Angular 1.x์ ๋งฅ๋ฝ์์ ํ์ฌ ๊ตฌํ์ด ์ข์ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ์ด๊ฒ์ ๊ตฌ์ฑ ์์ ์ด๋ฆ์ ์ทจํ๊ณ ์ปจํธ๋กค๋ฌ ์ด๋ฆ์ ์ถ๋ ฅํ๋ ์ค์ ๊ธฐ๋ฅ์ผ๋ก ๋ ธ์ถํ์๊ฒ ์ต๋๊น? ์ด๋ฐ ์์ผ๋ก ํ์ฌ ํจํด๊ณผ ๋ฏธ๋์ ๋ง์ด๊ทธ๋ ์ด์ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ ๊ฑฐ ํ๋ ์๊ฐ.
$ctrl์ ๋ํด +1.
Ctrl์ "์ปจํธ๋กค๋ฌ" ์ ๋ฏธ์ฌ๋ก Angular 1 ๋ฌธ์ ๋ฐ ์์ ์์ ๋ง์ ๊ธฐ์กด ๋ฌธํ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ข์ ์ธก์ ์ ์ํด ์ธํฐ๋ท ๊ฒ์ "๊ฐ๋ Ctrl"์ ์๋ํ์ญ์์ค.
๊ตฌ์ฑ ์์ ์ด๋ฆ์์ ํ์์ํค๋ ํ์ฌ ์ ํ์ ์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ค์ ๋ก ๊ฝค ๊ธธ์ด์ง๋ ๊ฒฝํฅ์ด ์๊ธฐ ๋๋ฌธ์ ์๋นํ ๋ถ์พํฉ๋๋ค.
:+1: $ctrl
์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก $vm
๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช
๊ณผ ๋น์ทํฉ๋๋ค.
$ctrl
์ ๋ํด +1
์ฐ๋ฆฌ๋ ng-forward ํ์์ ์ด๊ฒ์ ๋ํด ๊ฝค ๋ง์ด ๋
ผ์ํ๊ณ ctrl
๊ฐ vm
๋ณด๋ค ๋ ๋ก๋๋ ์ฉ์ด๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค.
๋๋ $ctrl
์ ํฌํํ๊ณ ์ด๊ฒ์ด ppl์ด ์ปจํธ๋กค๋ฌ๋ฅผ vm
๋ ์ด์ ํธ์ถํ์ง ์๋๋ก ๊ถ์ฅํ๋ค๋ฉด ๋งค์ฐ ๊ธฐ์ ๊ฒ์
๋๋ค :P
์ ๋๋ ์ถ๊ฐํ๊ณ ์ถ๋ค
์ด๊ฒ์ ์ ๋ ฅ ConTROL ์์์ ํผ๋๋ ์ ์์ต๋๋ค.
์๋. ์ค๋ง.
$ctrl
๋๋ ๊ทธ๊ฒ์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
+1 $ctrl
๊ธฐํ ์ ์:
$this
์ ํฌํํฉ๋๋ค. ์๋ํ๋ฉด ng2์์ ์ปจํธ๋กค๋ฌ์ this
๊ฐ ํ
ํ๋ฆฟ์ ์ปจํ
์คํธ์ด๊ธฐ ๋๋ฌธ์
๋๋ค(๋ด ์๊ฐ์ component
๋ ng1๊ณผ ng2 ์ฌ์ด์ ์ ํ ๋๊ตฌ ์ญํ ์ ๋งค์ฐ ์ข์ต๋๋ค).
$ctrl์ ๋ํด +1
๋ํ ๊ตฌ์ฑ ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ $ctrl
์์ฑ์ ์ ํธํฉ๋๋ค.
$ctrl์ ๋ํด +1
$this์ +1
๋๋ this
๋ฅผ ์ฌ์ฉํ๊ณ $
๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด ๋๋ฌด ๋ง์ ํดํน์ด ์๋๋ผ๋ฉด ์ญ์ ํฉ๋๋ค. ๋ค๋ฅธ ๊ฒ์ ์ค์๋ง์ด ์๋ ์ ์ผํ ์ต์
์ด๊ธฐ๋ ํ๊ณ ์ฝ์ด๋ฅผ ์ซ์ดํฉ๋๋ค. :)
$ctrl ๋๋ $cc(๊ตฌ์ฑ ์์ ์ปจํธ๋กค๋ฌ์ ์ฝ์)๋ก ์ด๋ํฉ๋๋ค.
$ctrl์ ๋ํด +1
$troll
๋ผ๊ณ ๋ถ๋ฅผ ์ ์์ต๋๋ค. $this
$controller
์ ์ ๋ฐ์ด ์์ต๋๋ค. ์๋์, ๋๋ด์
๋๋ค. ์ ๋ $ctrl
๋ก ๊ด์ฐฎ์ต๋๋ค. :+1:
$ctrl + 1
$vm
์ฅ์
๋จ์
$ctx
- ์ปจํ
์คํธ์ ๋ํ ๋ฐ๋ก ๊ฐ๊ธฐ์
๋๋ค.
$ctrl
๋ณด๋ค ์ผ๋ฐ์ ์ด๊ณ $vm
๋ณด๋ค ๋ ์ต๋ช
, $comp
๋๋ $this
์ฒ๋ผ ํผ๋๋์ง ์์ต๋๋ค.
ํ
ํ๋ฆฟ ์์ง(Jade, Handlebars, Mustache.js, Dust.js, Nunjucks, EJS ๋ฑ)์ ์ดํด๋ณด์๋๋ฐ ์ด๋ฆ์ด context
, locals
๋๋ data
์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ํ $ctx
์ปจํ
์คํธ์ ๊ฒฝ์ฐ $ctrl
(๋๋ $this
)์ ๋์ผํ ์ธ์ง ๊ณผ๋ถํ๊ฐ ์์ผ๋ฉฐ ์ค์ ๋ก in Angular 2, where the context is the controller
๋ผ๊ณ ๋งํ์ต๋๋ค.
@albertosantini - $ctx
์ ํ ๊ฐ์ง ๋ฌธ์ ๋ ์ค์ ์ปจํ
์คํธ๊ฐ ํ์ฌ ๋ฒ์์ด๋ฉฐ this
์์๋ ์ง์ ์ก์ธ์คํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
$vc
- View Controller๋ฅผ ๋ํ๋
๋๋ค.
Apple ๋ฌธ์ ์์ ์ฐธ์กฐ๋ฅผ ์ฐพ์์ต๋๋ค.
"...UIViewController ํด๋์ค๋ ๋ณด๊ธฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋์ ์์ฑ์ ์ ์ํฉ๋๋ค... "
๋๋ $this
์ ๊ฐ๋ ฅํ๊ฒ ํฌํํฉ๋๋ค.
<textarea ng-change="$this.handleChange">
_์ฅ์ :_
ctrl = this
๋ฅผ ์ํํ ํ์๊ฐ ์์ด ๋ ์ํฐํฐ๊ฐ ๋์ผํ๊ฒ ๋ณด์
๋๋ค.$this
์ด์ธ์ ๋ชจ๋ ๊ฒ์ Angular๊ฐ Angular ์ ๋ํ ์ธ๊ธฐ ์๋ ๋ถ๋ง ์ค ํ๋ ์ธ _"๋ ๋ง์ ๋
์ ์ธ์ด"_๋ฅผ ๋์
ํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋๋ค. ์ปจํธ๋กค๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ผ๋ฉ๋๋ค. controller: function() {
var ctrl = this;
ctrl.items = [];
ctrl.text = '';
ctrl.handleSubmit = function () {
ctrl.items.push({text: ctrl.text});
ctrl.text = '';
};
}
๋ ๊นจ๋ํ๊ณ ์ฐ์ํ๋ฉฐ ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์๋ ๋์
controller: function() {
this.items = [];
this.text = '';
this.handleSubmit = function () {
this.items.push({text: this.text});
this.text = '';
};
<textarea onChange={this.handleChange}>
@dmitriz AngularJS์์ $this
์ ํ ๊ฐ์ง ๋ฌธ์ ๋ ํ
ํ๋ฆฟ์์ ์ปจํ
์คํธ(์: this
)๊ฐ ์ค์ ๋ก ์ปจํธ๋กค๋ฌ๊ฐ ์๋๋ผ๋ ๊ฒ์
๋๋ค. React (๋ฐ Angular 2)์์๋ ์ค์ ๋ก ๋์ผํ ๊ฒ์ด๋ฏ๋ก this
(๋๋ $this
)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. Angular 1์์๋ ๋์ผํ์ง ์์ผ๋ฏ๋ก $this
๋ ์ค์ ๋ก ๋ ๋ง์ ํผ๋์ ์ผ์ผํฌ ์ ์์ต๋๋ค.
JavaScript ์ธก๋ฉด๊ณผ ๊ด๋ จํ์ฌ ๋ฌด๋ฃ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ this
์ ๋ฐ์ธ๋ฉ ๋ฌธ์ ๋๋ฌธ์ ES5 ์ฝ๋์์ this
์ ๋ณ์นญ์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ ๋งค์ฐ ์ผ๋ฐ์ ์
๋๋ค. ๋ฐ๋ผ์ ์ปจํธ๋กค๋ฌ๋ ์ฌ์ ํ var that = this
์ ๊ฐ์ ๊ฒ์ ๊ฐ๊ณ ์์ ๊ฒ์
๋๋ค. ์ด ๊ฒฝ์ฐ var ctrl = this
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฆ, ์ํ์ง ์๋ ๊ฒฝ์ฐ ์ปจํธ๋กค๋ฌ์์ ์ด ์์
์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. ๊ฐ์ฒด์์ ๋ด๋ถ์ ์ผ๋ก this
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ํ ํฉ๋ฆฌ์ ์ธ IMO์ด์ง๋ง ์ธ๋ถ์์ ์ฌ์ฉํ ๋๋ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
@dmitriz , ์ปจํธ๋กค๋ฌ์ ๋ทฐ์์ ๋์ผํ ๋ณ์นญ์ ๊ฐ์ง ํ์๋ ์์ต๋๋ค(๋๋ ์ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค). ๋ํ ์ฝ๋ฐฑ ๋ฑ์ ๋ํด .bind(this)
๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋๋ก ์ปจํธ๋กค๋ฌ์์ ํญ์ var self = this
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ๋ฌธ์ ๊ฐ๋์ด์๋ ์๋ฉ๋๋ค.
๋ค๋ฅธ ์ต์ ์ ๊ดํ์ฌ:
$ctx
: ๋๋ ์ด๊ฒ์ ์ข์ํ์ง ์๋๋ค. ์๋ํ๋ฉด ( @petebacondarwin ์ด ์ธ๊ธํ๋ฏ์ด) ์ปจํธ๋กค๋ฌ๋ ํํ์์ ์ปจํ
์คํธ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.$this
: (Angular ์์์) this
๋ ํ์ฌ ๋ฒ์์ ๋ํ ํน์ ๋ณ์นญ์ด๋ฏ๋ก this --> scope
๋ฐ $this --> controller
๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ์ด๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค. ๋์ฑ ํผ๋์ค๋ฌ์ธ ๊ฒ์
๋๋ค. (๊ทธ๋ ์ง ์์๋ค๋ฉด ์ข์์ ํ
๋ฐ.)$vm
: ๋๋ ์ด๊ฒ์ ์ข์ํ์ง ์์ง๋ง(์ด๋ฏธ ์ธ๊ธํ ์ด์ ๋ก), ์ฐ๋ฆฌ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ ์ ์ถฉ์กฑ์ํค๋ ๊ฒ์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.$cmp
: ๋งค์ฐ ๋ง์กฑ์ค๋ฝ์ง๋ ์์ง๋ง(100% ์ ํํ์ง ์๊ธฐ ๋๋ฌธ์) ์ถฉ๋ถํ ์ ์ธ์ ์
๋๋ค. ์ฐ๋ฆฌ์ ์ ์ฝ์ ๋ ์ ์ถฉ์กฑ์ํค๋ ๊ฒ์ด ์๋ค๋ฉด ํจ๊ป ๊ฐ ์ ์์ต๋๋ค.$comp
: ๋ ์งง๊ธฐ ๋๋ฌธ์ $cmp
๋ฅผ ์ ํธํฉ๋๋ค( $comp
compare
์ ๋ ์ด์ "ํผ๋ํ ์ ์๋" ๊ฒ์ ์ฐพ์ง ๋ชปํจ).$ctrl
: ๋๋ ์ด๊ฒ์ ๊ฝค ์ข์ํ๋ค. ๋งค์ฐ ์งง๊ณ ์ ์ธ์ ์ด๋ฉฐ ์ต๋ํ ์ ํํฉ๋๋ค. ๋๋ ํญ์ ๋ด ์ปจํธ๋กค๋ฌ์ ctrl
์ ๋ฏธ์ฌ๋ฅผ ๋ถ์์ผ๋ฉฐ ConTRoL
์ ํผ๋ํ๋ ๊ฒ์ ๋ณธ ์ ์ด ์์ต๋๋ค(๊ทธ๋ฌ๋ ๋ ์ง์์ด ์๋ ์ฌ๋๋ค์ ํผ๋์ด ์์๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค :)). ์ฐ๋ฆฌ๊ฐ ํผ๋์ด ๋ฌธ์ ๊ฐ ์๋๋ผ๊ณ ๊ฒฐ์ ํ๋ค๋ฉด, ๋๋ ํ์คํ ์ด๊ฒ์ผ๋ก ๊ฐ ๊ฒ์ด์ง๋ง, ๋๋ ๋ค๋ฅธ ๊ฒ์ ํด๋ ๊ด์ฐฎ์ต๋๋ค.$troll
: ์ข ๋ ์๊ฐํด ๋ณผ ํ์๊ฐ ์์ต๋๋ค. ํ์คํ ์ ์ฌ๋ ฅ์ด ์์ต๋๋ค.stuck_out_tongue:$as
, $at
, $cc
, $prox
, $vc
): ์ ๋ ๊ทธ๋ค์ด ์๋ก์ด ๊ฐ๋
์ ๋์
ํ๊ณ ์์ผ๋ฉฐ ๋ ๋ง์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋์๋ณด๋ค ํผ๋.๋๋ $ctrl
์ ํฌํํฉ๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ด ์ง์๋ฌธ ์ปจํธ๋กค๋ฌ์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋จ์ํ.
๋ค๋ฅธ ๊ฒ๋ค์ ๋ํ์ฌ:
$vm
-- ์ด๋ฏธ ์ง์ ํ๋ฏ์ด ํ์ ์ฌ์ฉ ์๋๊ฐ ์๋ => ํจํด/์ฝ๋ ์ฝ๊ธฐ์ ํผ๋ ๋๋ ๊ฐ๋ฐ์์ ์ ํ ๊ฐ์(vm์ ๊ตฌํํด์ผ ํจ)$cmp
-- ๊ธ์์, ์ปดํฌ๋ํธ ์์ฒด๊ฐ ์๋๋ผ ์ปจํธ๋กค๋ฌ(๋จ)์ธ๊ฐ์? ๊ทธ๋์ ์ค์ ๋ก ์คํด์ ์์ง๊ฐ ์์ต๋๊น?$this
-- ๋ํ โโ์ด๋ฏธ ์ธ๊ธํ์ง๋ง ํผ๋์ค๋ฝ์ต๋๋ค. ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค๊ฐ ๋ฒ์์์ "์ด๊ฒ"์ ๋ง๋๋ ๊ฒ์ ๋ฌด์์
๋๊น? ์๋ฏธ๋ก ์ ์ผ๋ก, ๋๋ ์ด๊ฒ์ด.. ๊ธ์.. ์ดํด๋ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.$ctx
-- ์ค์ ๋ก๋ $this
์ ๋์ผํฉ๋๋ค.๋ํ Pascal์ด ์ด๋ฏธ ๋งํ๋ฏ์ด ์ ์ด ์์์ ํผ๋ํ์ง ์์ต๋๋ค. Angular2๊ฐ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ชจ๋ DOM/์ ๋ ฅ ์์(์: $ctrl, $val, $cmbx ๋ฑ)๋ฅผ ์ฃผ์ ํ์ง ์๋ ํ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ง๋ ์์ต๋๋ค.
+1 $ctrl
์ด์ ์ฃผ์๊ณผ ๊ฐ์ ์ค์์:
$vm
, $as
, $at
, $cc
, $prox
, $vc
, $ctx
,. ..: ํ๋ก๊ทธ๋๋จธ์๊ฒ ๋ถํ์ํ ์๋ก์ด ๊ฐ๋
์ ์๊ฐํฉ๋๋ค.$this
: this
๊ฐ ์ด๋ฏธ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ํผ๋์ ์ค ์ ์์ต๋๋ค.$cmp
or $comp
: (๋จผ์ ๋ ๋์ ๋ฐฉ๋ฒ) ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ตฌ์ฑ ์์ ๋ชจ๋ธ์ ์ง์คํ๋๋ก ํ๊ธฐ ๋๋ฌธ์ ์ข์ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋จํ์ง ์์ ์ ์์ต๋๋ค.$ctrl
: ์ค์ฝํ, ์ปจํธ๋กค๋ฌ์ ๊ฒ์๋๋ ๊ฒ์ด๋ฏ๋ก ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.this = $scope
๋ฅผ ๋ชฐ๋์ต๋๋ค. ๋ช
ํํ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ๊ทธ๊ฑด ์ ์ธ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด $ctrl
๋ $troll
๋ฅผ ์ ์ธํ๊ณ ์ฐจ์ ์ฑ
์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. :)
$ctrl
์ ๋ํ +1 : ๊ฐ์ฅ ์ง๊ด์ ์ด๊ณ ๊ฐ์ฅ ์ผ๋ฐ์ ์
๋๋ค.
@petebacondarwin ์์ธํ ๋ด์ฉ ๊ฐ์ฌํฉ๋๋ค.
๋ฐ๋ผ์ $ctrl
์ ๋ํด +1 ์
๋๋ค.
๊ธฐ๋ณธ ์ด๋ฆ์ผ๋ก ์ ์ธ์ $ctrl
๋ฅผ ์ ํธํฉ๋๋ค.
@ssssssssssss @ssssssssd
VM์ด ์ข์ ํํ์ด ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
(์ด๋ฏธ ๋ค๋ฅธ ๋ฌธ์ ์ ๋ํด ๋ ผ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฅํ๋ฉด ๋งํฌํ์ธ์.)
AFAIK ๋๋ฌธ์ Angular์ ์ปจํธ๋กค๋ฌ๋ MVC์ ํด๋์ ์ปจํธ๋กค๋ฌ๋ณด๋ค ๋ทฐ ๋ชจ๋ธ์ ๋ ๊ฐ๊น์ต๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋์ง๋ ๋ชจ๋ฆ ๋๋ค.
@QuinntyneBrown ์ ์์ ์ ๋์ํฉ๋๋ค.
๋ ์งง๋ค.
ํ์ง๋ง ๋ ์ค์ํ -
@johnpapa ์ ์คํ์ผ ๊ฐ์ด๋๋ ๋งค์ฐ ์ธ๊ธฐ๊ฐ ์์ผ๋ฉฐ, ๋ด๊ฐ ์๋ ๋ง์ ์ฌ๋๋ค์ ์ด๋ฅผ "์ ๊ท ๊ฐ๋ฐ์" ๊ต์ก ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ก ์ฐธ์กฐํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ณ๊ฒฝํ๋ฉด ์ ๊ฐ๋ฐ์์๊ฒ ๋ฏธ์น ์ํฅ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค(์คํ์ผ ๊ฐ์ด๋์ PR ์ ์ถ).
๊ทธ๋์ ์ ๋ ๋ ์งง์ "$vm" ์ด๋ฆ์ ์ข์ํฉ๋๋ค(BTW, ์ $
๋ก ์์ํด์ผ ํฉ๋๊น? :)
(BTW, ์ $๋ก ์์ํด์ผ ํฉ๋๊น? :)
Angular ์ ์ ์ด๋ฆ์ ์ด๋ฆ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋๋จธ ์ ์์ ๊ณต์ ํ ๋ $
๋ก ์์ํ์ฌ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค. ์ด ๊ฒฝ์ฐ Angular์ ์ํด ์ ์๋๊ณ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฒด ์ ์๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฒ์ ๋ด์์ ์ ์๋ฉ๋๋ค. $
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ Angular๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ธฐ๋ํ๋ ๋๋ก ์ผ๊ด๋๊ฒ ๋์ํฉ๋๋ค.
(@johnpapa) ์ด ์คํ์ผ ๊ฐ์ด๋์ ๋ชฉ์ ์ ๋ด๊ฐ ์ฌ์ฉํ๋ ๊ท์น๊ณผ ๋ ์ค์ํ๊ฒ๋ ๋ด๊ฐ ์ ํํ๋ ์ด์ ๋ฅผ ๋ณด์ฌ์ค์ผ๋ก์จ Angular ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์คํ์ผ Y032 controllerAs ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ๋ ์ด๋ฅผ ์ํด ์บก์ฒ ๋ณ์๋ฅผ ์ฌ์ฉํ์ญ์์ค. ViewModel์ ๋ํ๋ด๋ vm๊ณผ ๊ฐ์ ์ผ๊ด๋ ๋ณ์ ์ด๋ฆ์ ์ ํํ์ญ์์ค.
๋ฐ๋ผ์ vm
, ctrl
๋๋ troll
์ด๋ ์๊ด์์ด ์ผ๊ด๋ ๋ณ์์ฌ์ผ ํฉ๋๋ค.
๋ํ ์์์ ์ง์ ํ๋ฏ์ด ์์ด๋์ด๋ ์๋ก์ด ๊ฐ๋
์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋๋ค. vm
๋ ViewModel
๋ฅผ ๋ํ๋
๋๋ค. View Models๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ ์ดํดํ์ง ๋ชปํ ๊ฒ์
๋๋ค. vm
๋๋ ViewModel
์ด ์๋ฏธํ๋ ๋ฐ๋ ํผ๋์ค๋ฌ์ธ ๊ฒ์
๋๋ค.
๋๋ ํผ๋์ค๋ฌ์ด ์ด๋ฆ์ ํฌ์ด ์๋๋๋ค. ctrl
์ด ํผ๋์ค๋ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ปจํธ๋กค๋ฌ์ธ๊ฐ์? ์ ์ด(html ์ ์ด์ ๊ฐ์)? ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๊ตฌ์ฑ ์์์ ๋ํ ๊ฒ์
๋๊น?
์ ๋ vm
๋๋ comp
์ ํฌํํฉ๋๋ค. vm
๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ค๋ช
ํ๊ธฐ ์ฝ์ต๋๋ค. comp
๋ ์๋กญ์ง๋ง ์ ์ฑ์ํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ ์๋๋๋ค.
$ctrl
๋ณด๋ค๋ $ctlr
(์ฆ, ConTroLleR)๋ ์ด๋ป์ต๋๊น?
+1 $ ๋ณด์
@petebacondarwin ์ค, ์ด๊ฒ์ ๊ดํ ๋ฌธ์ ๋ก ์ฐ๋ฆฌ๋ฅผ ํญ๊ฒฉํ (๋ ๊ฐ์) ๋๋ ์ฆ ํ์๋ค... :)
@drpicox ์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์์ ์ด ์ ํจํฉ๋๋ค. ํ๋ ์ผ์ด์ง๋ง ์ ์ด๋ ์ ๊ฒฝํ์ ๋น์ถ์ด ๋ณผ ๋ ์ ๋ ๊ฐ๋ฐ์์๊ฒ "vm" ๊ท์น์ ๊ฐ๋ฅด์น๋ ๋ฐ ์ด๋ ค์์ด ์์๊ณ ๋ช๋ช ํ์ฌ๊ฐ ๋๊ท๋ชจ ์ฑ์ ๊ทธ๋ฐ ์์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฐ ๋์์ ์ฃผ์ด ๊ฝค ๋นจ๋ฆฌ ์ป์์ง๋ง ์๋ง๋ ์ ๋ m ์ด ๊ฒฝํ์์ ํผ์.
๊ทธ๋ฌ๋ ๋๋ ๋น์ ์ ์์ ์ ์ดํดํฉ๋๋ค. $์ ๋์
๋๋ ์ฌ์ ํ $vm์ ์ง์งํ์ง๋ง $comp๋ ๊ด์ฐฎ์ต๋๋ค...
Angular UI Bootstrap ํ์ @wesleycho ๋ vm
์ ๋ํด ๊ฐ๋ ฅํ๊ฒ ๋ฐ๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
https://github.com/angular/angular.js/issues/10007#issuecomment -166707284
$ctrl
์ +1
@shairez ์ปจ๋ฒค์
๊ฐ์ต์ ๋ํ ๊ทํ์ ์๊ฒฌ์ ์์ ํ ๊ณต์ ํฉ๋๋ค. ์ ๋ ์์ญ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์งํํ ํ๋ฆฌ๋์ค ๊ฑด์ถ๊ฐ์ด๋ฉฐ vm
์ปจ๋ฒค์
์ด ๋ง์ ๋์์ด ๋์์ง๋ง ์ฌ์ ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์ ๊ฑฐ๋ถํ๋ ์ฌ๋๋ค์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์๋ง๋ ์ด ๊ท์น์ด Angular ์์ฒด์์ ๋์จ ๊ฒ์ด๋ผ๋ฉด ์ ํญ์ด ๋ ๋ฎ์์ผ ํ์ง๋ง ์ด๋ฆ์ด $ctrl
์ด๋ฉด ์ ํญ ์์ด ์๋ ๊ทธ๋๋ก ๋ฐ์๋ค์ผ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. $ctrl
์(๋) ๊ฐ๋จํฉ๋๋ค.
๋ฐ๋ผ์ ํฌํ๊ฐ ์งํ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
$comp 4
$cmp 2
$ctrl 19
$vm 3
$this 3
$ctx 2
$vc 1
๊ฐ์ฅ ์ข์ํ๋ ๊ฒ์ $ctrl
์
๋๋ค. ์ธ๊ธฐ๊ฐ ์์ ๋ฟ๋ง ์๋๋ผ ์ด ํธ์ ์๋จ์ ๊ฒ์๋ ๊ธฐ์ค์ ํต๊ณผํฉ๋๋ค. ๋ํ ํน๋ณํ ์๋ก์ด ๊ฐ๋
์ ๋์
ํ์ง๋ ์์ต๋๋ค. ์ค์ ๋ก ์ธ๊ธ๋๋ ๊ฒ์ Angular ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ ์ดํดํ๊ณ ์๋ ์ปจํธ๋กค๋ฌ(๊ตฌ์ฑ ์์/๋๋ ํฐ๋ธ ์ปจํธ๋กค๋ฌ)์ด๋ฉฐ ์ผ๋ถ ๊ฐ๋ฐ์๊ฐ ์ง์๋ฌธ์์ vm
๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ต์ํด์ง ๊ฒ์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค.
๊ต์ฅํฉ๋๋ค, $ctrl์ ๋๋ค!
$ctrl
๋ก '์ด๋ฆ'์ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค.์ ๊ฐ ์ ๊ธฐํ๊ณ ์ถ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ Angular 1.4 ์ดํ์์๋ $
๊ธฐํธ๋ก ์์ํ๋ "as name"์ ์ค์ ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Error: [$controller:ctrlfmt] Badly formed controller string
์ผ๋ถ ํ์ฌ๋ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ๋ช ๊ฐ์์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๊ทธ๋ค์ ์ฌ์ ํ โโ๊ด๋ก๋ฅผ ๋ฐ๋ฅด๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ํฅํ ์ ๊ทธ๋ ์ด๋ ํ๋ก์ธ์ค๊ฐ ๋ ๊ฐ๋จํด์ง ๊ฒ์ ๋๋ค.
vm
์์ $ctrl
๋ก ์ ํํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ป๊ฒ ์๊ฐํด? ์ด๋ค ์ ์?
๋จ๊ณ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ ์ ์์ต๋๋ค.
vm
์์ ctrl
๋ก ๋ณํ ์์
1.5๊ฐ ๋ฆด๋ฆฌ์ค๋๋ฉด ctrl
๋ฅผ $ctrl
๋ก "์
๊ทธ๋ ์ด๋"ํฉ๋๋ค.
์ฅํฉํ์ง๋ง ๋ค๋ฅธ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ angular.version
๋ฅผ ํ์ธํ์ฌ ๋ฐํ์์ controllerAs ๋ณ์นญ์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒ:
angular
.module('github')
.directive('issueThread', issueThread);
/* <strong i="14">@ngInject</strong> */
function issueThread () {
// this can be required as a module if using some module loader
// or - another way is using global on angular namespace (i know it a bad practice - hwoever just to indicate reuse of this check
let prefix = angular.version.minor === 5 ? '$' : '';
let controllerAs = prefix + 'ctrl';
// with template strings
var controllerAs = `${prefix}ctrl`;
var directive = {
controller: controller,
restrict: 'E'
};
return directive;
function controller() {
}
}
@orizens ํ ํ๋ฆฟ์ ์ด๋ป์ต๋๊น?
@shairez ์, ์ดํด๊ฐ ๋ฉ๋๋ค. $ ๊ธฐํธ๋ ๊ฐ๋ ๋ด๋ถ์๋ง ์ฌ์ฉ๋ฉ๋๋ค... ๋ค์ ๋ง์ด๋์์ ์ผ์ข ์ ์๋ฐฉํฅ ํธํ์ฑ์ด ์์ ์ ์์ต๋๋ค.
@drpicox ๋น์ ์ ๊ฑฐ๊ธฐ์์ ์์ ์ ์ป์์ต๋๋ค :).
๋ค์ ๋งํ์ง๋ง (ํดํค ํ๋ ...) ์๊ฐํ ์์๋ ํ ๊ฐ์ง ์๋ฃจ์
์ ๋ฐํ์ / ๋น๋์ ํ
ํ๋ฆฟ์์ ctrl์ $ ctrl๋ก "๊ต์ฒด"ํ๋ ๊ฒ์
๋๋ค. ์ด๋ ํ๋ก์ ํธ๊ฐ es6 ๋ฐ ๋ชจ๋๋ก ๊ตฌ์ถ๋ ๊ฒฝ์ฐ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋น๋ ์ gulp/grunt/npm์ ๋ํ ์์
์
๋๋ค.
๊ทธ๋ฅ controllerAs
๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ด์์ ์ธ ์๋ฃจ์
์ ์๋๋๋ค(๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์ปจํธ๋กค๋ฌ ๋ฌธ์์ด(์๋ ๊ฒฝ์ฐ)์์ ์๋ณ์๋ฅผ ์ถ์ถํ๋ RegExp๋ฅผ ์์ ํด์ผ ํ ์๋ ์์ง๋ง controllerAs
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ญ๋ฐฉํฅ ๋ฐ ์๋ฐฉํฅ ํธํ์ด ๊ฐ๋ฅํฉ๋๋ค. :)
(๋๊ตฐ๊ฐ RegExp๋ฅผ ์ถ์ถํ๋ ํด๋น ์๋ณ์๋ฅผ ์ ๋ฐ์ดํธํ ๊ธฐํ๋ฅผ ๊ฐ๊ณ ์ถ๋ค๋ฉด ๋ฐ๋ก ๊ฑฐ๊ธฐ ์ ์์ต๋๋ค.)
@gkalpak ์ข์ ์ง์ ์
๋๋ค. controllerAs
์์ฑ์ ์ฌ์ฉ์ ์ด์งํ๋ ๊ฒ์ ์ข์ ์ ์
๋๋ค. ์ ์ ๋ ๋ง์ ์ฌ๋๋ค์ด 1.4 ์ดํ ๋ฒ์ ์์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
ํ์ง๋ง ์ฌ๋๋ค์๊ฒ $ctrl
์ ๋ํด ๊ฐ๋ฅด์น๊ธฐ ์์ํ๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ํจ๊ณผ๊ฐ ์๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํผ๋์ค๋ฌ์ธ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ๋ผ์ ์๋ฐฉํฅ ํธํ์ฑ(๋ฐฉ๋ฒ์ ํ์คํ์ง ์์)์ ์ข์ ์๊ฐ์ ๋๋ค!
@shairez ์ด ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค ์ ์์ต๋๊น?
<ctrl> as <identifier>
๋ฅผ ์ฌ์ฉํ ๋ ์๋ณ์์ $
๋ฅผ ํ์ฉํ๋ #13736์ ๋ง๋ค์์ต๋๋ค.
์ฌ์ ํ ํ์ฉ๋๋ ์๋ณ์๋ controller: '... as ...'
๋ controllerAs: '...'
๊ฐ์ ๋ค๋ฆ
๋๋ค.
์ฆ, controller: '... as $ctrl'
๋ฅผ ํ๋ณดํ๋ ๊ฒ์ด ๊ด์ต์ ๋ฐ๋ผ๊ฐ๋ ์ข์ ๋ฐฉ๋ฒ์ธ์ง ํ์ ํ ์ ์์ต๋๋ค. controller: '...', controllerAs: '$ctrl'
controller: '... as $ctrl'
๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค.
@gkalpak ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ปจํธ๋กค๋ฌ ๋์ controllerAs
์์ฑ์ ๊ตฌ๋ฌธ์ผ๋ก ์ฌ์ฉํ๋๋ก ๊ถ์ฅํด์ผ ํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
ํ ๊ฐ์ง๋ ๊ตฌ์ฑ ์์ ๋ฌธ์์ "๊ตฌ์ฑ ์์ ์ ์๋ ๋งค์ฐ ๊ฐ๋จํ๋ฉฐ ์ผ๋ฐ ์ง์๋ฌธ์ ์ ์ํ๋ ๋ฐ ์์ด ๋ง์ ๋ณต์ก์ฑ์ด ํ์ํ์ง ์์ต๋๋ค"๋ผ๊ณ ๋์ด ์์ต๋๋ค.
๋ ๋ค๋ฅธ ํ๋: ์ง์์ด์ ์ปจํธ๋กค๋ฌ๋ ์๋ก ํต์ ํ๋ ๋ณต์กํ ์ง์๋ฌธ์ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ง ํ์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋งํฌ ๊ธฐ๋ฅ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค(์: "API๋ฅผ ๋ค๋ฅธ ์ง์๋ฌธ์ ๋
ธ์ถํ๊ณ ์ถ์ ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋งํฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค"๋ผ๋ ๊ฐ๋ฐ์ ๊ฐ์ด๋ ์ง์๋ฌธ๊ณผ ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ปจํธ๋กค๋ฌ ๋์ ๋งํฌ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ง์๋ฌธ์ ์๋ฐฑ ๋ฒ ์ฌ์ฉ๋จ) ng-repeat์์๋ ํจ์ฌ ๋น ๋ฆ
๋๋ค.
๊ทธ๋์...
๋๋ Component("simple" ์ง์์ด)์์ "simple"(๋งํฌ ๊ธฐ๋ฅ)์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ์๊ณ ๋ฌด๊ฑฐ์ด ๊ฒ(์ปจํธ๋กค๋ฌ)๋ง ์ฐพ์ต๋๋ค.
๋ญ๊ฐ ๊ทธ๋ฆฌ์?
์ค๋ช
๊ฐ์ฌํฉ๋๋ค.
@frfancha - ์ฑ๋ฅ ํฅ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ธ์คํด์คํํ๊ธฐ ์ํด $injector
๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ง์ฃ ? ์ ๊ณตํ ์ ์๋ ์ฑ๋ฅ ์ธก์ ์ด ์์ต๋๊น?
๊ตฌ์ฑ ์์ ๋์ฐ๋ฏธ์ ์์ด๋์ด๋ ๊ตฌ์ฑ ์์ ์ ํ(๋ถ๋ฆฌ, ์์) ์ง์๋ฌธ์ ์์ฑํ๋ ๊ฒ์ (LOC ์๋ฏธ์์) ๋ ๊ฐ๋จํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. Angular 2์์ ์์ ์ด ์ํ๋๋ ๋ฐฉ์๊ณผ ๋ ์ธ๋ผ์ธ์ธ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
ํน์ ์ฑ์ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ณด๋ค ์ผ๋ฐ์ ์ธ directive
๋์ฐ๋ฏธ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ ์์ ์ง์๋ฌธ์ ๋ณํํ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
์๋ก์ด component()
๋์ฐ๋ฏธ์ ์ผ์นํ๋์ง ํ์ธํ๋ ค๋ฉด ๋ค๋ฅธ API ๋ฌธ์ ๋ฐ ๊ฐ๋ฐ์ ๊ฐ์ด๋๋ฅผ ์ดํด๋ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@petebacondarwin ์ฒ์์ ์ฐ๋ฆฌ๋ ์ปจํธ๋กค๋ฌ๋ก ๋ชจ๋ ์ง์๋ฌธ์ ์์ฑํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ฐ๋๋ ์ฒซ ๋ฒ์งธ ํํ ๋ฆฌ์ผ์์ ์ด๋ฐ ์์ผ๋ก ํ์๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
1000๊ฐ์ ์ง์๋ฌธ(ng-repeat x 200์ "ํ"์ผ๋ก 5๊ฐ)์ด ์๋ ํน์ ํ์ด์ง๋ฅผ "์ด๊ธฐ"์ ์ฝ 15์ด๊ฐ ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ํ์์ผ ์ง์๋ฌธ์ ๋ํด ๋ ๋ง์ด ์ฝ๊ณ " (๋ค๋ฅธ ์ปจํธ๋กค๋ฌ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์๊ตฌํจ์ผ๋ก์จ) ์ง์ ์ฌ์ด์ "๋งํ๊ธฐ". ์ปจํธ๋กค๋ฌ ๋์ ๋งํฌ ๊ธฐ๋ฅ์ผ๋ก ๋ชจ๋ "๋ค์ ์์ฑ"ํ ํ(๋ค์ ์ฐ๊ธฐ๋ ์ปจํธ๋กค๋ฌ ๋์ ๋งํฌ์ ์ฝ๋๋ฅผ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ง ํ๊ธฐ ๋๋ฌธ์ ํฐ ๋จ์ด์) ํ์ด์ง๋ฅผ ํ์ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ 8์ด์์ต๋๋ค.
์ด๊ฒ์ ํ์ด์ดํญ์ค ์กฐ์น๋ผ๋ ์ ์ ์ ์ํ์ญ์์ค. ๋น์ ์ฐ๋ฆฌ๋ Chrome์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ Chrome์์์ ์๊ฐ์ Firefox์ ์ธ ๋ฒ์งธ๋ก ์ถ์ ๋ฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ค ๋ฒ์งธ(๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ด ํ๋ฅญํฉ๋๋ค. Firefox์์ ์ฐ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ "์คํ์๋ ๋๋ฆผ)"๋ก ์๋ ค์ ธ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก Angular์ ๋งค์ฐ ๋ง์กฑํฉ๋๋ค(Smalltalk Windows ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ชจ๋ ๋ฐ์ดํฐ ์
๋ ฅ ์์ฉ ํ๋ก๊ทธ๋จ์ WEB API + angular๋ก ๋ณํํ์ต๋๋ค. ๊ด์ฌ์ด ์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ? ์ ๋ ๋๋๋ก ๋ฐ๋์ ์์ต๋๋ค).
๊ทธ๋ฌ๋ ์ง์๋ฌธ์ ์ํํ๋ "๊ฐ๋จํ ๋ฐฉ๋ฒ"์ ์ง์ํ๋ ์ปจํธ๋กค๋ฌ์ ์ ํ์ ๋๋์ต๋๋ค.
@gkalpak ๊ฐ์ฌํฉ๋๋ค!
@petebacondarwin ๋ณ๋์ ๋ฌธ์ ๋ ๋ ์ด์ ๊ด๋ จ์ด ์์ต๋๊น? (ํ๋ณด ๋๋ฌธ์)
๋๋ (๋ด๊ฐ ์ด ๊ฒ์ฒ๋ผ) ์ฌ๋๋ค์๊ฒ controllerAs ์์ฑ์ ์ฌ์ฉํ๋๋ก ๊ต์กํด์ผ ํ๋ค๋ ๋ฐ ๋์ํ์ง๋ง ์ฌ๋๋ค์ด ์ด ์์ฑ์ ๋ถ๋ชํ ๊ฒ์ผ๋ก ์์ํ๊ธฐ ๋๋ฌธ์ ์ธ๊ธํ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐ๋ผ์ ํฌํ๊ฐ ์งํ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
๊ฐ์ฅ ์ข์ํ๋ ๊ฒ์
$ctrl
์ ๋๋ค. ์ธ๊ธฐ๊ฐ ์์ ๋ฟ๋ง ์๋๋ผ ์ด ํธ์ ์๋จ์ ๊ฒ์๋ ๊ธฐ์ค์ ํต๊ณผํฉ๋๋ค. ๋ํ ํน๋ณํ ์๋ก์ด ๊ฐ๋ ์ ๋์ ํ์ง๋ ์์ต๋๋ค. ์ค์ ๋ก ์ธ๊ธ๋๋ ๊ฒ์ Angular ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ ์ดํดํ๊ณ ์๋ ์ปจํธ๋กค๋ฌ(๊ตฌ์ฑ ์์/๋๋ ํฐ๋ธ ์ปจํธ๋กค๋ฌ)์ด๋ฉฐ ์ผ๋ถ ๊ฐ๋ฐ์๊ฐ ์ง์๋ฌธ์์vm
๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์ต์ํด์ง ๊ฒ์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค.