ã³ã³ããŒãã³ããã¹ã³ãŒãã«æ¥ç¶ãããŠããå Žåãã³ã³ããŒãã³ãã®ãã£ã¬ã¯ãã£ãã³ã³ãããŒã©ã®ååã«ã¯äžè²«ããããã©ã«ãå€ã䜿çšããå¿ èŠããããŸãã https://github.com/angular/angular.js/issues/10007#issuecomment-166704255ãåç §ããŠãã ãã
çŸåšãããã©ã«ãã§ã³ã³ããŒãã³ãã®æ£èŠåã«ãªã£ãŠããŸãã ããã¯çæ³çã§ã¯ãããŸãã
aïŒã³ã³ããŒãã³ãåã¯é·ããªãããã³ãã¬ãŒãã§äœ¿çšããã«ã¯æ±ãã«ãããªãå¯èœæ§ããããŸã
bïŒã³ã³ããã¹ããã³ã³ãããŒã©ãŒã§ããAngular2ã§äœ¿çšããããã³ãã¬ãŒããèªåçã«æŽæ°ããããšã¯ããè€éã§ãã
ååã®åºæºã¯æ¬¡ã®ãšããã§ãã
1ïŒãã¹ãŠã®ã³ã³ããŒãã³ãã§åãã§ããå¿
èŠããããŸã
2ïŒ $
ã§å§ãŸãå¿
èŠããããŸã
3ïŒçãããå¿
èŠããããŸãïŒ2ã4æåïŒ
ããã«ãååã¯ãã¹ã³ãŒãã«å®éã«å ¬éãããŠãããã®ãè¡šãå¿ èŠããããŸãã
以åã®ææ¡ã®ããã€ãã¯æ¬¡ã®ãšããã§ãã
vm
-ããã¯å€ãã®ã¢ããªã±ãŒã·ã§ã³ã§äžè¬çã«äœ¿çšãããååã§ãããã³ã³ãããŒã©ãŒã¯å¿
ãããããã¥ãŒã¢ãã«ãã§ã¯ãããŸãã$comp
-ããã¯ããŒã ããã®çŸåšã®ææ¡ã§ãããæ¯èŒãšæ··åãããå¯èœæ§ããããããã»ã©çãã¯ãããŸãã$ctrl
-ããã¯å
¥åConTRoLèŠçŽ ãšæ··åãããå¯èœæ§ããããŸã$this
-ã³ã³ããã¹ãã¯å®éã«ã¯ãŸã ã¹ã³ãŒãã§ãããããã³ã³ãããŒã©ãŒã¯å®éã«ã¯ãã³ãã¬ãŒãå
ã®this
ã§ã¯ãããŸããcïŒããã°ã©ããŒã¯ã isolate:false
ã䜿çšããŠãç¥å
ã®ã³ã³ãããŒã©ãŒã«çŽæ¥ã¢ã¯ã»ã¹ããããšããŸãã
@ drpicox-ãã®ãã«ããŒã䜿çšããŠäœæãããã³ã³ããŒãã³ãã®isolate: false
ãçŠæ¢ãããšèšããããªããŸãã
ãããèæ ®ããåŸãç§ã¯åæããŸãïŒ
isolate: true
ïŒç§ã«ãšã£ãŠããããã¯æ¬åœã«ã³ã³ããŒãã³ãã§ããã$ ctrlè¡šèšãå®å
šãªæå³ãæã¡ãŸããisolate: false
ïŒç§ã«ãšã£ãŠã¯ãæ¢åã®ã³ã³ããŒãã³ãã®äžçš®ã®ãšã³ãã³ãµãŒã§ãã_decorators_ã§ãããã®å Žåã$ ctrlãè¡çªãããããçŸåšã®åœåæ³ã§åé¡ãããŸããããããã2çªç®ã®ã±ãŒã¹ã¯ãã£ã¬ã¯ãã£ãã䜿çšããæ¹ãè¯ããšæããŸãã_decorators_ã¯é »ç¹ã§ã¯ãªããéåžžã¯äœã¬ãã«ã§ããããžã¥ãã¢ã«ã¯é©ããŠããŸããã
ãããã£ãŠãããããisolate: false
ãçŠæ¢ããããšããå§ãããŸãã
ä»ã®èãæ¹ã§ã¯ã_decorators_ã«ã€ããŠãçŸåšã®ãšã³ãã£ãã£ã®ãEãã³ã³ããŒãã³ãã®ã³ã³ãããŒã©ãŒãååŸããé¢æ°ã¯ãç¹ã«çŸåšã®ã³ã³ããŒãã³ããåŠçããããã®æ±çšã®_decorators_ãäœæããããšããå§ãããŸãïŒã©ã®ã³ã³ãããŒã©ãŒãäºåã«ç¥ãå¿ èŠããããŸãïŒã§ãããããªããæ¢ããŠãããã®ã®äžçš®ã®ã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããããšã¯ã§ããŸããïŒã
ç§ã¯$cmp
ã奜ãã§ããã $comp
ã®æ¹ãããããããã®ã§ãããã«è¯ããšæããŸãã
ç§ã¯
$cmp
ã奜ãã§ããã$comp
ã®æ¹ãããããããã®ã§ãããã«è¯ããšæããŸãã
ç§ã¯$comp
ã奜ãã§ãã $cmp
ãèŠããã³ã«ããæ¯èŒããããšæããŸãã
å¥ã®ææ¡ïŒã³ã³ããŒãã³ãã®ååãã³ã³ãããŒã©ãŒã€ã³ã¹ã¿ã³ã¹åãšããŠäœ¿çšããªãã®ã¯ãªãã§ããïŒ
äŸïŒuser-profile-> scope.userProfile
@tabanliviuãããçŸåšmaster
ã§è¡ãããŠããæ¹æ³ã§ããã @ petebacondarwinã¯ãã®å·ã®æåã®æçš¿ã§ããªãäžè¬åãåªããŠããã®ãã«ã€ããŠèšåããŸããã
@mgol ïŒ+1ïŒãã±ãããèªãã ãšããç§ã¯ãããç解ãããšæããŸãã ãã®å€æŽã¯ãngUpgradeã®åé¡ãšèŠãªãå¿ èŠããããŸããïŒ Angular 1.xã®ã³ã³ããã¹ãã§ã¯ãçŸåšã®å®è£ ãåªãããœãªã¥ãŒã·ã§ã³ã ãšæããŸãã ããããããããã³ã³ããŒãã³ãåãååŸããŠã³ã³ãããŒã©ãŒåãåºåããèšå®é¢æ°ãšããŠå ¬éããŸããïŒ ãã®ããã«ããŠãçŸåšã®ãã¿ãŒã³ãšå°æ¥ã®ç§»è¡ãã¹ãæäŸããŸãã
ãã€ã¯ã·ã§ããæéã
$ ctrlã®å Žåã¯+1ã
Ctrlã«ã¯ãAngular1ã®ããã¥ã¡ã³ããšäŸã«ãã³ã³ãããŒã©ãŒãæ¥å°ŸèŸãšããŠå€ãã®æ¢åã®æåããããŸãã ãangularctrlããã°ãŒã°ã«ã§æ€çŽ¢ããŠã¿ãŠãã ããã
ã³ã³ããŒãã³ãåãã掟çããçŸåšã®éžæã¯ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããªãé·ããªãåŸåããããããéåžžã«åä»ã§ãã
ïŒ+1ïŒ $ctrl
ã®å Žåãããã©ã«ããšããŠã®$vm
ã¯ãã³ã³ãããŒã©ãŒã®äœ¿çšæ¹æ³ã®ã¹ããŒãã¡ã³ãã®ããã«æããŸãã
$ctrl
ã®å Žåã¯+1ã
ç§ãã¡ã¯ãããng-forwardããŒã ã§ããªãæ¿ããè°è«ãã ctrl
ã¯vm
ãããè² è·ã®å°ãªãçšèªã§ãããšå€æããŸããã
ç§ã¯$ctrl
ã«æ祚ããŸããããã«ãããpplãã³ã³ãããŒã©ãŒãããvm
ãšåŒã°ãªãããã«ãªããŸãã
ããããããä»ãå ããã
ããã¯ãå ¥åConTRoLèŠçŽ ãšæ··åãããå¯èœæ§ããããŸã
ããã ããŸãã
$ctrl
ããã¯èª°ã«ãšã£ãŠãæãç解ããããçŽæçãªããšã ãšæããŸãã
+1 $ctrl
ãã®ä»ã®ææ¡ïŒ
ng2ã§ã¯ã³ã³ãããŒã©ãŒã®this
ããã³ãã¬ãŒãã®ã³ã³ããã¹ãã§ããããã $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
ã®åé¡ã®1ã€ã¯ãå®éã®ã³ã³ããã¹ããçŸåšã®ã¹ã³ãŒãã§ããã this
ããçŽæ¥ã¢ã¯ã»ã¹ã§ããããšã§ãã
$vc
-ViewControllerã®ç¥ã§ãã
ç§ã¯ã¢ããã«ã®ããã¥ã¡ã³ãã§ãªãã¡ã¬ã³ã¹ãèŠã€ããŸãã
"... UIViewControllerã¯ã©ã¹ã¯ããã¥ãŒã管çããã€ãã³ããåŠçããããã®ã¡ãœãããšããããã£ãå®çŸ©ããŸã..."
ç§ã¯$this
ã«åŒ·ãæ祚ããŸãïŒ
<textarea ng-change="$this.handleChange">
_é·æïŒ_
ctrl = this
ãå®è¡ããå¿
èŠã¯ãããŸããã$this
以å€ã®ãã®ã¯ãAngularã_ãããç¬èªã®èšèªã_ãå°å
¥ããŠããããã«æããŸããããã¯Angularã«é¢ããäžè¬çãªèŠæ
ã®1ã€ã§ãã ã³ã³ãããŒã©ã¯æ¬¡ã®ããã«æ±æãããŸãã 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
ã«é¢ãã1ã€ã®åé¡ã¯ããã³ãã¬ãŒãã§ã¯ã³ã³ããã¹ãïŒã€ãŸãã this
ïŒãå®éã«ã¯ã³ã³ãããŒã©ãŒã§ã¯ãªãããšã§ãã ReactïŒããã³Angular 2ïŒã§ã¯ããããã¯å®éã«ã¯åããã®ã§ããããã«æãããããã this
ïŒãŸãã¯$this
ïŒã䜿çšããã®ã¯çã«ããªã£ãŠããŸãã Angular 1ã§ã¯ããããã¯åãã§ã¯ãªãããã $this
ã¯å®éã«ã¯ããã«æ··ä¹±ãåŒãèµ·ããå¯èœæ§ããããŸãã
JavaScriptã®åŽé¢ã«é¢ããŠã¯ãES5ã³ãŒãã§ã¯ãç¡æã®ã¡ãœãããåŒã³åºããšãã«this
ã®ãã€ã³ãã£ã³ã°ã®åé¡ãããããã this
ãä»ã®ã³ãŒãã«ãšã€ãªã¢ã¹ããã®ãéåžžã«äžè¬çã§ãã ãããã£ãŠãã³ã³ãããŒã©ãŒã¯ãšã«ããvar that = this
ã®ãããªãã®ãæã£ãŠããããšããããããŸãããã®å Žåã¯ã var ctrl = this
ã䜿çšããããšãã§ããŸãã
ããã¯èšã£ãŠããå¿
èŠããªããã°ãã³ã³ãããŒã©ãŒã§ãããè¡ãå¿
èŠã¯ãããŸããã IMOããªããžã§ã¯ãã®å
éšã§this
ã䜿çšããããšã¯å®å
šã«åççã§ãããå€éšãã䜿çšããå Žåã¯å¥ã®ååã§ãªããžã§ã¯ããåç
§ããŸãã
@dmitriz ãã³ã³ãããŒã©ãŒãšãã¥ãŒã§åããšã€ãªã¢ã¹ãæã€å¿
èŠã¯ãããŸããïŒç§ã¯æ±ºããŠããããŸããïŒã ããã«ãã³ãŒã«ããã¯ãªã©ã«.bind(this)
ã䜿çšããå¿
èŠããªãããã«ãã³ã³ãããŒã©ãŒã§ã¯åžžã«var self = this
ã䜿çšããŸãã
ã ãããããã¯åé¡ã§ã¯ãªãã¯ãã§ããimoã
ãã®ä»ã®ãªãã·ã§ã³ã«ã€ããŠïŒ
$ctx
ïŒïŒ @ petebacondarwinãè¿°ã¹ãããã«ïŒã³ã³ãããŒã©ãŒã¯åŒã®ã³ã³ããã¹ãã§ã¯ãªããããããã¯å¥œãã§ã¯ãããŸããã$this
:(è§åºŠåŒã§ïŒ 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ããã®ãããªæ¹æ³ïŒã€ãŸãã$ ctrlã$ valã$ cmbxãªã©ïŒã§ãã¹ãŠã®DOM /å ¥åèŠçŽ ãæ¿å ¥ããªãéãããããåé¡ã«ãªããšã¯æããŸããã
+1 $ctrl
以åã®ã³ã¡ã³ããšåãè¡ïŒ
$vm
ã $as
ã $at
ã $cc
ã $prox
ã $vc
ã $ctx
..ïŒããã°ã©ããŒã«æ°ããäžèŠãªæŠå¿µãå°å
¥ããŸã$this
ïŒ this
ãã§ã«ååšãããããããã°ã©ããŒã«ãšã£ãŠæ··ä¹±ãæãå¯èœæ§ããããŸã$cmp
ãŸãã¯$comp
:(æåã«è¯ãïŒããã°ã©ããŒãã³ã³ããŒãã³ãã¢ãã«ã«éäžãããã®ã§ããã¯ãã§ãããåçŽã§ã¯ãªããããããŸãã$ctrl
ïŒã¹ã³ãŒããã³ã³ãããŒã©ãŒã§å
¬éãããŠãããã®ãªã®ã§ãç解ããããã䜿ããããã®ã¯æããã§ããããããŸãããæ確ã«ããŠãããŠããããšããç§ã¯this = $scope
ãç¥ããŸããã§ãããããããã¯ããããã¯ãããé€å€ããŸãã
次ã«ã $troll
ã:)ã§ããããšãé€ãã°ã$ $ctrl
ã¯æ¬¡åã®éžæã®ããã«èãããŸãã
$ctrl
ã®+1ïŒæãçŽæçã§æãäžè¬ç
@petebacondarwin詳现ãããããšãã
ãããã£ãŠã $ctrl
ã®å Žåã¯+1ã§ãã
ããã©ã«ãåãšããŠå®£èšå$ctrl
ãåªå
ããŸãã
@petebacondarwin @PascalPrecht
VMãé©åãªè¡šçŸã§ã¯ãªãã®ã¯ãªãã§ããïŒ
ïŒå¥ã®åé¡ã«ã€ããŠãã§ã«è©±ãåã£ãŠããå Žåã¯ãå¯èœã§ããã°ãªã³ã¯ããŠãã ããïŒ
AFAIKã§ãããããAngularã®ã³ã³ãããŒã©ãŒã¯ãMVCã®åŸæ¥ã®ã³ã³ãããŒã©ãŒã§ã¯ãªãããã¥ãŒã¢ãã«ã«è¿ãã§ãã ããããå€åç§ã¯äœããæ¬ ããŠããŸãã
@QuinntyneBrownã®ãã€ã³ãã«åæããŸã-
çãã§ãã
ããããã£ãšéèŠ-
@johnpapaã®ã¹ã¿ã€ã«ã¬ã€ãã¯éåžžã«äººæ°ããããç§ãç¥ã£ãŠããå€ãã®äººã ã¯ããã圌ãã®ãæ°ããéçºè ããã¬ãŒãã³ã°ããã°ã©ã ã®äžéšãšããŠåç §ããŠããŸãã
ããã§ãããå€æŽããå Žåã¯ããããæ°ããéçºè ã«äžãã圱é¿ãèæ ®ããå¿ èŠããããŸãïŒããããã¹ã¿ã€ã«ã¬ã€ãã«PRãæåºããŠãã ããïŒ
ã ããç§ã¯çãã$ vmãã®ååã奜ãã§ãïŒãšããã§ããªãããã¯$
ã§å§ãŸããªããã°ãªããªãã®ã§ããïŒ:)
ïŒãšããã§ããªãããã¯$ã§å§ãŸããªããã°ãªããªãã®ã§ããïŒ:)
Angularã§å®çŸ©ãããååã¯ãåå空éãããã°ã©ããŒå®çŸ©ãšå
±æãããšãã«$
ã§å§ãŸããè¡çªãåé¿ããŸãã ãã®å ŽåãAngularã«ãã£ãŠå®çŸ©ãããããã°ã©ããŒãç¬èªã®å®çŸ©ãæã€ããšãã§ããã¹ã³ãŒãå
ã§å®çŸ©ãããŸãã $
ã䜿çšãããšãååã®è¡çªãåé¿ããAngularã¯ããã°ã©ããŒãæåŸ
ãããã®ãšäžè²«ããŠåäœããŸãã
ïŒ@johnpapaïŒãã®ã¹ã¿ã€ã«ã¬ã€ãã®ç®çã¯ãç§ã䜿çšããèŠåãšãããã«éèŠãªããšã«ãããããéžæããçç±ã瀺ãããšã«ãã£ãŠãAngularã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ã¬ã€ãã³ã¹ãæäŸããããšã§ãã
ã¹ã¿ã€ã«Y032controllerAsæ§æã䜿çšããå Žåã¯ããã®ããã«ãã£ããã£å€æ°ã䜿çšããŸãã ViewModelãè¡šãvmãªã©ã®äžè²«ããå€æ°åãéžæããŸãã
ãããã£ãŠã vm
ã ctrl
ããŸãã¯troll
ã®ãããã§ãããã¯é¢ä¿ãããŸãããããã¯ãäžè²«æ§ã®ããå€æ°ã§ããå¿
èŠããããŸãã
ããã«ãåã«ææããããã«ãæ°ããæŠå¿µãè¿œå ããããšã¯ã§ããŸããã vm
ã¯ViewModel
$ã®ç¥ã§ããã¥ãŒã¢ãã«ã䜿çšããŠããªãããæ
£ããŠããªãå Žåã¯ç解ã§ããŸããã vm
ãŸãã¯ViewModel
ã¯äœã®ç¥ã§ãæ··ä¹±ãæããŸãã
ç§ã¯çŽããããååã®ãã¡ã³ã§ã¯ãããŸããã ctrl
ã¯çŽãããããšæããŸãã ã³ã³ãããŒã©ãŒã§ããïŒ ã³ã³ãããŒã«ïŒhtmlã³ã³ãããŒã«ã®ãããªïŒïŒ ããã¯ã³ã³ããŒãã³ãã§ã¯ãããŸãããïŒ
vm
ãŸãã¯comp
ã®ããããã«æ祚ããŸãã vm
ã¯äžè¬çã«äœ¿çšãããç°¡åã«èª¬æã§ããŸãã comp
ã¯æ°ãããã®ã§ãããç¥èã«ããã®ã¯é£ãããããŸããã
$ctrl
ã§ã¯ãªã$ctlr
ïŒã€ãŸããConTroLleRïŒã¯ã©ãã§ããïŒ
+1 $ comp
@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
ã§ãååãšããŠãã«ååãä»ããããšã¯ã§ããŸããç§ãæèµ·ããããã1ã€ã®æžå¿µã¯ãè§åºŠ1.4以äžã§ã¯ã $
èšå·ã§å§ãŸããååãšããŠããå®éã«äœ¿çšã§ããªãããšã§ãã
次ã®ãšã©ãŒãçºçããŸãã
Error: [$controller:ctrlfmt] Badly formed controller string
äžéšã®äŒæ¥ã¯ææ°ããŒãžã§ã³ãžã®ã¢ããã°ã¬ãŒãã«åé¡ããããæ°ãæãããå ŽåããããŸãã
圌ãã¯ãŸã æ £ç¿ã«é ããã«ã€ããŠããããšãæãã§ããã®ã§ã圌ãã®ã¢ããã°ã¬ãŒãããã»ã¹ã¯å°æ¥ããç°¡åã«ãªãã§ãããã
圌ãã«ãšã£ãŠã vm
ãã$ctrl
ã«åãæ¿ããããšã¯äžå¯èœã§ãã
ã©ãæããŸããïŒ å©èšããããŸããïŒ
ãããã段éçã«ç§»è¡ããŸãïŒ
vm
ãctrl
ã«å€æããããšããå§ããŸã
1.5ããªãªãŒã¹ããããã ctrl
ã$ctrl
ã«ãã¢ããã°ã¬ãŒããããŸã
ãã1ã€ã®å¯èœãªæ¹æ³ã¯ãåé·ã§ã¯ãããŸãããå®è¡æã«controllerAsãšã€ãªã¢ã¹ãçæãã angular.version
ããã§ãã¯ããããšã§ãã äœãã®ãããªãã®ïŒ
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ããªãã¯ããã«ãã€ã³ããåŸãŸãã:)ã
ç¹°ãè¿ããŸãããç§ãèããããšãã§ãã1ã€ã®è§£æ±ºçïŒããããŒãªãã®...ïŒã¯ãå®è¡æ/ãã«ãæã«ãã³ãã¬ãŒãã§ctrlã$ ctrlã«ã眮ãæãããããšã§ãã ãããžã§ã¯ãães6ãšã¢ãžã¥ãŒã«ã§æ§ç¯ãããŠããå Žåãããã¯ç°¡åã«å®çŸã§ããŸãã ãã以å€ã®å Žåã¯ããã«ãæã«gulp / grunt / npmã®ã¿ã¹ã¯ã«ãªããŸãã
controllerAs
ã ãã䜿ã£ãŠã¿ãŸãããïŒ
ããã¯çæ³çãªè§£æ±ºçã§ã¯ãããŸããïŒå®éãã³ã³ãããŒã©ãŒæååïŒååšããå ŽåïŒããèå¥åãæœåºããæ£èŠè¡šçŸãä¿®æ£ããå¿
èŠããããããããŸãããã 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
ããããã£ã®äœ¿çšãããããæšå¥šããå¿
èŠãããããšã«åæããŸãã
1ã€ã¯ãã³ã³ããŒãã³ãã®ããã¥ã¡ã³ãã«ãããšããã³ã³ããŒãã³ãã®å®çŸ©ã¯éåžžã«åçŽã§ãããäžè¬çãªãã£ã¬ã¯ãã£ãã®å®çŸ©ã®èåŸã«ããè€éãã®å€ããå¿
èŠãšããªãããšããããšã§ãã
ãã1ã€ïŒãã£ã¬ã¯ãã£ãå
ã®ã³ã³ãããŒã©ãŒã¯ãçžäºã«éä¿¡ããè€éãªãã£ã¬ã¯ãã£ããäœæããå Žåã«ã®ã¿å¿
èŠã§ãã ãã以å€ã®å Žåã¯ããªã³ã¯é¢æ°ã§ååã§ãïŒããšãã°ãéçºè
ã¬ã€ããã£ã¬ã¯ãã£ãã®ãAPIãä»ã®ãã£ã¬ã¯ãã£ãã«å
¬éããå Žåã¯ã³ã³ãããŒã©ãŒã䜿çšããŸãããã以å€ã®å Žåã¯ãªã³ã¯ã䜿çšããŸãããããã³ç§ã®çµéšãããã³ã³ãããŒã©ãŒã®ä»£ããã«ãªã³ã¯ã䜿çšããŠåãæ©èœãå®è£
ãããã£ã¬ã¯ãã£ãã¯æ°çŸå䜿çšãããŸãng-repeatã§ã¯ã¯ããã«é«éã§ãã
ããã§...
ã³ã³ããŒãã³ãïŒãã·ã³ãã«ããã£ã¬ã¯ãã£ãïŒã«ã¯ãã·ã³ãã«ãïŒãªã³ã¯é¢æ°ïŒãå®è¡ããæ¹æ³ããªããéããã®ïŒã³ã³ãããŒã©ãŒïŒã®ã¿ãèŠã€ãããŸãã
ç§ã¯äœããæããã§ããïŒ
説æããããšãã
@ frfancha-ããã©ãŒãã³ã¹ã®åäžã¯ãã³ã³ãããŒã©ãŒãã€ã³ã¹ã¿ã³ã¹åããããã«$injector
ã䜿çšããå¿
èŠããªãããã§ãã ãããããæäŸã§ããããã©ãŒãã³ã¹æž¬å®å€ãããã€ããããŸããïŒ
ã³ã³ããŒãã³ããã«ããŒã®èãæ¹ã¯ãã³ã³ããŒãã³ãã¿ã€ãïŒåé¢ãèŠçŽ ïŒãã£ã¬ã¯ãã£ãã®èšè¿°ãïŒLOCã®æå³ã§ïŒç°¡åã«ããããšã§ãã Angular2ã§ã®äœæ¥æ¹æ³ãšããäžèŽããã³ãŒããç°¡åã«èšè¿°ã§ããŸãã
ç¹å®ã®ã¢ããªã«ããã©ãŒãã³ã¹ã®åé¡ãããå Žåã¯ãã³ã³ããŒãã³ããã£ã¬ã¯ãã£ããå€æããŠãããäžè¬çãªdirective
ãã«ããŒã䜿çšããã®ã¯ããªãç°¡åã§ãã
ä»ã®APIããã¥ã¡ã³ããšéçºè
ã¬ã€ããèŠãŠãããããæ°ããcomponent()
ãã«ããŒãšäžèŽããŠããããšã確èªããå¿
èŠããããšæããŸãã
@petebacondarwinæåã«ãç§ãã¡ãåŸã£ãæåã®ãã¥ãŒããªã¢ã«ã§ãã®ããã«ç€ºããããšããçç±ã ãã§ãã³ã³ãããŒã©ãŒã䜿çšããŠãã¹ãŠã®ãã£ã¬ã¯ãã£ããäœæããŸããã
1000åã®ãã£ã¬ã¯ãã£ãïŒng-repeat x 200ã®ãè¡ãã§5åïŒãå«ãç¹å®ã®ããŒãžããéããã®ã«çŽ15ç§ããã£ãããšãããã£ãŠåããŠããã£ã¬ã¯ãã£ãã®è©³çŽ°ãèªã¿ãããã§ãªãå Žåã¯ã³ã³ãããŒã©ãŒã圹ã«ç«ããªãããšãç解ããŸããããã£ã¬ã¯ãã£ãéã§ã話ããïŒå¥ã®ãã£ã¬ã¯ãã£ãã®ã³ã³ãããŒã©ãŒãèŠæ±ããããšã«ããïŒã ã³ã³ãããŒã©ãŒã®ä»£ããã«ãªã³ã¯é¢æ°ã䜿çšããŠãã¹ãŠããæžãæãããåŸïŒã³ã³ãããŒã©ãŒã®ä»£ããã«ãªã³ã¯å
ã®ã³ãŒããã³ããŒ/貌ãä»ãããã ããªã®ã§ãæžãæãã¯å€§ããªèšèã§ãïŒãããŒãžã衚瀺ããæéã¯8ç§ã§ããã
ãããã¯Firefoxã®å¯Ÿçã§ãããåœæã¯Chromeã䜿çšããŠããªãã£ãããšã«æ³šæããŠãã ããã ä»ã§ã¯ããã䜿çšããŠãããChromeã§ã®æéã¯Firefoxã®3çªç®ã§ãããšæšå®ããŠããŸãïŒãããŠã¡ã¢ãªäœ¿çšéã¯4çªç®ã§ãïŒãããŠã¡ã¢ãªãªãŒã¯ããªãã®ã§ãFirefoxã§ã¯ã¢ããªã±ãŒã·ã§ã³ã¯ãååŸã«é
ããããšãç¥ãããŠããŸãïŒã
ç§ãã¡ã¯äžè¬çã«Angularã«éåžžã«æºè¶³ããŠããŸãïŒãã¹ãŠã®ããŒã¿å
¥åã¢ããªã±ãŒã·ã§ã³ãSmalltalkWindowsã¢ããªã±ãŒã·ã§ã³ããWEBAPI + Angularã«å€æããŸããïŒèå³ãããå Žåã¯??ç§ã¯æã
ãã³ãã³ã«ããŸãïŒã
ãããããã£ã¬ã¯ãã£ããå®è¡ããããã®ãç°¡åãªæ¹æ³ãããµããŒãããã³ã³ãããŒã©ãŒã®éžæã«é©ããŠããŸã
ããããšã@gkalpak ïŒ
@petebacondarwinå¥ã®åé¡ã¯ããé¢ä¿ãããŸããããïŒ ïŒPRã®ããïŒ
ç§ã¯ïŒç§ãæžããããã«ïŒåæããŸããcontrollerAsããããã£ã䜿çšããããã«äººã ãæè²ããå¿ èŠããããŸããã人ã ãããã«ééãããšäºæž¬ããŠããã®ã§ãããã«ã€ããŠèšåããŸããã
æãåèã«ãªãã³ã¡ã³ã
æ祚ãè¡ããã次ã®ããã«ãªããŸãã
æããã«ãæ°ã«å ¥ãã¯
$ctrl
ã§ãã 人æ°ãããã ãã§ãªãããã®å·ã®åé ã«æ²èŒãããŠããåºæºã«åæ ŒããŠããŸãã ããã«ãç¹ã«æ°ããæŠå¿µã¯å°å ¥ãããŠããŸããã å®éã«åç §ãããŠããã®ã¯ãAngularéçºè ããã§ã«ç解ããŠããã³ã³ãããŒã©ãŒïŒã³ã³ããŒãã³ã/ãã£ã¬ã¯ãã£ãã³ã³ãããŒã©ãŒïŒã§ãããäžéšã®éçºè ããã£ã¬ã¯ãã£ãã§vm
ã䜿çšããããšã«æ £ããŠããããã«ãéçºè ã綿è±ã䜿ãã®ã«ããã»ã©æéã¯ããããŸããããã®ããã©ã«ã