ããã¯ãã©ããã³ã°ã®åã¬ã³ããªã³ã°ãšã¯ãã¬ã³ããªã³ã°ããã»ã¹ã®éäžã§ããã§ã«ã¬ã³ããªã³ã°ãããŠãããã®ãå€æŽããã·ããªãªãæããŸãã
äŸãã°ïŒ
{{foo}} {{foo-bar parent=this}}
// app/components/foo-bar.js
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.get('parent').set('foo', 'bar');
}
});
ã芧ã®ãšããã foo-bar
ã³ã³ããŒãã³ããã€ã³ã¹ã¿ã³ã¹åãããŠã¬ã³ããªã³ã°ããããŸã§ã«ã芪ã³ã³ããã¹ãã®å€foo
ããŠã {{foo}}
ã«ãŒãªãŒã«ããŒã¿ãå
¥åããŠããŸãã ãã ããã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯ãåãå€ãå€æŽããããšããŠããããã§ãã ãããã¯ãã©ãã¯ãã
ããã¯ããªã極端ãªäŸã§ãããåé¡ã瀺ããŠããŸãã init
ã didInitAttrs
ã didReceiveAttrs
ã willInsertElement
ã willRender
ãã¬ã³ããªã³ã°ããã»ã¹äžã«åæçã«çºçããŸãã ããã«ãããã¯ãã©ããã³ã°ã¯ãåæ¹åã«ãã€ã³ããããããããã£ã®åäœããçããåé¡ã§ããããšããããããŸãã
ãã®åäœã¯åžžã«ä¿¡é Œæ§ããããŸããããéæšå¥šã§éšåçã«ãµããŒããããŠããŸããïŒEmber 1.13以éïŒã
You modified ApplicationController.foo twice in a single render. This was unreliable in Ember 1.x and will be removed in Ember 3.0
1.13以éãEmberã¯ãããã¯ãã©ãã¯ãæ€åºããããšãã«ããã«2åç®ã®åã¬ã³ããªã³ã°ãå®è¡ããããšã§ããããµããŒãããŸããïŒãã®åŸãã·ã¹ãã ãå®å®ãããŸã§ç¹°ãè¿ããŸãïŒã ãã®æŠç¥èªäœãããã©ãŒãã³ã¹ã®åé¡ã®åå ãšãªãå¯èœæ§ããããŸãã 極端ãªå Žåãããã«ããç¡éã«ãŒããçºçããå¯èœæ§ããããŸãã
Glimmer 2ã§ã¯ãè¿œå ã®åã¬ã³ããªã³ã°ã¯æ¯èŒçå®äŸ¡ã§ãããããã¯ãã©ãã¯set
ãæ€åºããããã®è¿œå ã®ç°¿èšã¯ããã§ã¯ãããŸããã Glimmer 2ã·ã¹ãã ã®å©ç¹ã®1ã€ã¯ãå€æŽã远跡ããããã«ãªãã¶ãŒããŒãç±å¿ã«èšå®ããå¿
èŠããªãããšã§ãã ããã«ãGlimmer 2ã®ç¹å®ã®æé©åã«ãããã·ã¹ãã å
ã§äœãå€æŽãããŠããªãããšãããã£ãŠããå Žåãã·ã¹ãã ã¯ãµãããªãŒã®ãã©ããŒã¹ãã¹ãããã§ããŸãã
ãããã®èŠå ãåããããšã倧éã®è¿œå ã®ç°¿èšãè¡ããæå³çã«ãããã®æé©åãç¡å¹ã«ããªãéãããããã®ããã¯ãã©ãã¯set
ïŒãŸãã¯äœããããã§ã«ã¬ã³ããªã³ã°ãããããã©ããïŒãç°¡åã«æ€åºã§ããªãããšãæå³ããŸãã
ããããµããŒãããã³ãŒãã¯ãã§ã«äœæããŸããããæ©èœã®ä¿¡é Œæ§ããã§ã«äœããïŒéåžžã«éèŠãªïŒç°¿èšã³ã¹ãããããããããŸã å¿ èŠãã©ãããç¥ããã«ããã¹ãŠã®äººãèªåçã«æå¹ã«ããããšãèºèºããŠããŸãã
劥åæ¡ãšããŠãçŸåšãéçºã¢ãŒãã§ã®ã¿æ€åºãå®è¡ããéæšå¥šã¡ãã»ãŒãžãéçºã¢ãŒãã®ã¢ãµãŒã·ã§ã³ïŒããŒããšã©ãŒïŒã«å€æããŸããã æ¬çªã¢ãŒãã§ã¯ãæ€åºã³ãŒããåé€ãããããã¯ãã©ãã¯ã¯æ©èœããŸããã
ãã®æ©èœãïŒã¢ãµãŒã·ã§ã³ãªãã§ïŒãµããŒãããæ©èœãã2çªç®ã®æ©èœãã©ã°ã®èåŸã«ããã³ãŒãããŒã¹ã«ä¿æããŠããŸãã ã³ãŒãã¯CIã§ç¶ç¶çã«ãã¹ããããŠããŸããã次ã®æé ã決å®ããã®ã«ååãªäœ¿çšæ³æ å ±ãåŸããããŸã§ãããã©ã«ãã§ã¯ç¡å¹ã«ãªã£ãŠããŸãã
ããã«ãã£ãŠåœ±é¿ãåãã䜿çšãã¿ãŒã³ããããšæãããå Žåã¯ãã·ããªãªã«ã€ããŠã§ããã ã詳ãã以äžã«èšå ¥ããŠãã ããã ãšã³ãžã³ãå€§å¹ ã«å€æŽããå¿ èŠã®ãªãã䜿çšå¯èœãªä»£æ¿æ¡ãã¿ãŒã²ãããœãªã¥ãŒã·ã§ã³ãååšããå¯èœæ§ãéåžžã«é«ããªããŸãã ãããã£ãŠãã³ãŒãããŒã¹ããã®å°ããªã³ãŒãã¹ããããã衚瀺ããã ãã§ãªãã䜿çšæ³ã«é¢ããèæ¯æ å ±ãšã³ã³ããã¹ããæäŸãããšäŸ¿å©ã§ãã
åèãŸã§ã«ãã¢ããªã«ãããã®èŠåã®ããã€ãããããŸããã å
·äœçã«ã¯ãã³ã³ããŒãã³ãã®init
å
ã®ãµãŒãã¹ã®äžéšã®ããããã£ãæŽæ°ããŸãããããã«ãããããŒãžäžã®ä»ã®äœããç°ãªãã¬ã³ããªã³ã°ãããªã¬ãŒããŸãã
次ã®å®è¡ã«ãŒãã§ããããã£ã®å€æŽãã¹ã±ãžã¥ãŒã«ããããšã§ããã®èŠåãä¿®æ£ããã®ã¯éåžžã«ç°¡åã§ãã ïŒããªã倧ããªïŒã¢ããªã®ãã¹ãŠã®èŠåã远跡ããŠä¿®æ£ããã®ã«çŽ1æéããããŸããã ããã¯æè¡çã«ã¯é倧ãªå€æŽã§ãããè¿œå ã®äœæ¥ãçºçãããšããŠããããªãã®è©äŸ¡ã«åæããŸãã
@fivetanleyãããã§ãšã©ãŒã¡ãã»ãŒãžãæ¹åããã®ã¯æããŸãã @krisseldenãš@stefanpennerã«ã¯ããããã®åé¡ã远跡ããããã®ã¯ãŒã¯ãããŒãããããšãç¥ã£ãŠããŸãããããããããã«é¢ããããã€ãã®æ瀺ãäžããã®ã«åœ¹ç«ã€å¯èœæ§ããããŸãã
@joukevandermaas run.nextïŒïŒã¯ããã®ãšã©ãŒã®åªããä¿®æ£ã§ã¯ãããŸãããããããã®ãšã©ãŒã«å§åãããŠããå Žåã¯ããªãããã«è¡ãã®ãã¯ç解ããŠããŸãã ããŒã¿ã®éæµããã§ã«ã¬ã³ããªã³ã°ãããŠãããã®ãç¡å¹ã«ããŠããçç±ãç解ããããšããå§ãããŸãã
ãããããä»»æã®ã³ã³ããŒãã³ãã«æ³šå ¥ã§ãããµãŒãã¹ã«å°éå ·ãèšå®ãããšããã®ã»ããããã§ã«ã¬ã³ããªã³ã°ããããã®ãç¡å¹ã«ããå¯èœæ§ãé«ããªããŸãã äžè¬ã«ãsetïŒïŒã¯ã¬ã³ããªã³ã°ããã¯äžã®å éšç¶æ ã§ã®ã¿äœ¿çšãããå ¥åããµãŒãã¹ã«é¢é£ä»ããããŠããªãããŸãã¯setïŒïŒã¯ã€ãã³ãã§äœ¿çšããããšãããã¿ãŒã³ã§ããå¿ èŠããããŸããå ¥åç¶æ ã¯ãã¬ã³ããªã³ã°ããããŸã§ã«è§£æ±ºãããå¿ èŠããããŸãã
@joukevandermaas run.nextïŒïŒã¯ããã®ãšã©ãŒã®åªããä¿®æ£ã§ã¯ãããŸããã
ãã®å Žåãglimmer2ã¯ãéè€ããäœæ¥ãçºçããŠãããããããã©ãŒãã³ã¹ã®é«ãã¢ããªãå¿ èŠãªå Žåã¯ãããã¯å¿ èŠãããŸããããšéç¥ããŠãããããããã©ãŒãã³ã¹ã®åé¡ãçºçããŸãã 以åã®å Žåãæ®ãç«ã¯ãããåžåããŸãããããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããŸãã
ããã§ã¯ãç¥èãå ±æããããã®äœæ¥ãããã«ããã€ããããŸã...æçµçã«ã¯ããããã¢ããªã®å¥å šãªåé²ã§ãããšä¿¡ããŠããŸãã ããããç§ãã¡ã¯èª°ããå©çãåŸãããã«å©çšã§ããããŒã«ãšç¥èãæã£ãŠããããšã確èªããå¿ èŠããããŸã:)
Emberã®é²è¡ç¶æ³ãæ¯èŒçå¯æ¥ã«ãã©ããŒããŠãã人ïŒtwitterãããgithubãã¡ãŒãªã³ã°ãªã¹ããªã©ïŒãšããŠããã®åé¡ã¯ç§ã«ã²ã£ããã£ãŠããã®ã§ãEmber 2.10ã®äžéšãšããŠçéžããå Žåãç¹ã«ä»ã®äººãé©ãããå¯èœæ§ããããšæããŸããããã«é¢é£ããéæšå¥šã®èŠåã¯ãåäœã3.0ãŸã§ãµããŒããããããšãå ·äœçã«ç€ºããŠããŸãã ãã®æ¯ãèããGlimmer2ã§æ©èœããªãããšãã©ãã§ã瀟äŒåãããŠããã®ãèŠãããšããªããšæããŸãïŒç§ã¯åã«ãããèŠéãããããããŸãããïŒã
ãããEmber2.10ã®äžéšãšããŠçéžããå Žåãç¹ã«ããã«é¢é£ããéæšå¥šã®èŠåã3.0ãŸã§åäœããµããŒããããããšãå ·äœçã«è¿°ã¹ãŠããããããããä»ã®äººãé©ãããå¯èœæ§ããããšæãããŸãã ãã®æ¯ãèããGlimmer2ã§æ©èœããªãããšãã©ãã§ã瀟äŒåãããŠããã®ãèŠãããšããªããšæããŸãïŒç§ã¯åã«ãããèŠéãããããããŸãããïŒã
ãããããã§ããã€ãã®ã¡ãã»ãŒãž/詳现ãæ¹åããå¿ èŠããããŸãã
ããã§2.10ãªãªãŒã¹ã«ãªããŸããã ããã¯2.10ãªãªãŒã¹ã®ããã°æçš¿ã§èšåãããŸããïŒ
ããã¯2.10ã®ããã°æçš¿ã§ã¯èšåãããŠããããåè¿°ã®ããã«ãéæšå¥šã®èŠåã§ã¯3.0ãŸã§ãµããŒãããããšä»¥åã«è¿°ã¹ãããŠãããããç§ã¯é©ããŸããã
ããã«ãã£ãŠåœ±é¿ãåãã䜿çšãã¿ãŒã³ããããŸãã åé¡ã¯ç§ã®äœ¿çšãã¿ãŒã³ã§ããããã®ç¹å®ã®å€æŽã§ã¯ãªããšç¢ºä¿¡ããŠããŸãããé©åãªä»£æ¿äœ¿çšãã¿ãŒã³ãã©ã®ãããªãã®ã«ãªããã«ã€ããŠã®å ¥åãå¿ èŠã§ãã
åºæ¬çã«ããã£ã«ã¿ãŒå¯èœãªããŒã¿ã»ããã衚瀺ããããŒãžããããŸãããããå®çŸããããã«ãEmberã®èšç®å€ã䜿çšããŠãããŒãžäžã®ããã€ãã®ã¯ãšãªãã©ã¡ãŒã¿ãŒã®å€ã«åºã¥ããŠããŒã¿ããã£ã«ã¿ãŒåŠçããŠããŸãã ãã ããç¡å¹ãªå ¥åïŒæåãæ°åã§ã¯ãªããªã©ïŒããŠãŒã¶ãŒå ¥åããquery-paramsã«è¿œå ãããã®ãé²ãããã«ã次ã®ãã¿ãŒã³ããããŸãã
filteredModel: Ember.computed('model', /*list of individual query params*/, function(){
let model = this.get('model').filterBy('pdf.pdf_path.url'); //removes all records that don't have a pdf uploaded
this.get('queryParams').forEach((filter)=> { // for each possible filter
if ((this.get(filter).length > 0)) { //if the filter has content...
//guardian pattern to prevent invalid inputs
let valid = new RegExp('^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$');
while (this.get(filter).length > 0 && !valid.test(this.get(filter))){
this.set(filter, this.get(filter).slice(0,-1));
}
//block of code where the model gets filtered
//...
//...
});
return model;
}),
ãããã£ãŠãåºæ¬çã«ããã£ã«ã¿ãŒåŠçãããã¢ãã«ãã©ã®ããã«èŠããããèšç®ãããšãã«ããã£ã«ã¿ãŒå€ã®ããããã«ç¡å¹ãªæåãå«ãŸããŠããå Žåã¯ãæå¹ã«ãªããŸã§æåŸã®æåãåé€ããŸãã 誰ãããããã®å ¥åã®åŠ¥åœæ§ãã§ãã¯ãè¡ãããã®ããã¯ãªãŒã³ãªæ¹æ³ã®ææ¡ãæã£ãŠããŸããïŒ
ãããé©ãã§ãããç¹ã«ãã¢ããªã2.9ã§å®è¡ãããŠãããšãã«èŠåã¡ãã»ãŒãžã衚瀺ãããªãã£ãããã§ãã 2.10ã«ã¢ããã°ã¬ãŒããããšãã¢ããªã±ãŒã·ã§ã³ã¯ããŒããããããã®ãšã©ãŒãåç §ããŸãã ä»ã®èª°ãããã®æ¯ãèããèŠãããšããããŸããïŒ
@revanarç§ã¯ããããå®å
šã«é¢ããŠããå¯èœæ§ããããŸãããCPã¯å®éã«ã¯2ã€ã®ç°ãªããã®ã®ããã§ãã1ã€ã¯ãã£ã«ã¿ãŒåŠçãããã¢ãã«ãè¿ãCPã§ããã1ã€ã¯ãã£ã«ã¿ãŒãæŽæ°ããããã®ãã®ã§ãã ãã£ã«ã¿éšåã®æŽæ°ããªãã¶ãŒããã«ã«ç§»åããŸãã ãŸãã¯ããããã³ã³ããŒãã³ãã§ãããã¯ãšãªãã©ã¡ãŒã¿ãã³ã³ããŒãã³ãã«æž¡ãå Žåã¯ãããžãã¯ãdidReceiveAttrs
ããã¯ã«ç§»åããŸãã ãããã¯ãã©ããã³ã°ã®åã¬ã³ããªã³ã°ããšã©ãŒãçºçããç§ã®çµéšãããCPããset
æäœã移åãããšããšã©ãŒããªããªãã¯ãã ãšæããŸãã
ããã倧å€ãªææã§ãã ç§ã¯å€ãã®åé¡ãä¿®æ£ããŸãããããã®éæšå¥šãšã©ãŒãçºçããŠãã1ã€ã®äŸã¯äžå¯è§£ã§ãã
Assertion Failed: You modified transitioningIn twice on <app<strong i="6">@component</strong>:link-to::ember1159> in a single render.
æ®ãç«ã®å éšããããã£ãè€æ°åæŽæ°ãããŠãããããé害ãçºçããŠããããã§ãã æ®å¿µãªãããSeleniumãã¹ãäžã«åçŸãããããããããã°ãå°é£ã§ãïŒSeleniumãã©ã€ããŒã¯ããã¹ãã®å®è¡äžã«éçºããŒã«ãæ©èœããªãããã«ããŸãïŒã ãµã€ã³ã€ã³ããã»ã¹ã®æåŸã«è¡ãããcontroller.transitionToRouteåŒã³åºããŸã§ãåé¡ã®å°ãªããšã1ã€ã®ã€ã³ã¹ã¿ã³ã¹ã远跡ããŸããããããã€ãã®ç°ãªãã·ããªãªã§çºçããŠããããã§ãã
ããã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãç¶è¡ããæ¹æ³ãããããŸããã
@chancancodeã¯ããã®éæšå¥šãšã©ãŒãç¡å¹ã«ããããã®æ©èœãã©ã°ã«ã€ããŠèšåããŸãããã httpsïŒ//github.com/emberjs/ember.js/blob/master/FEATURES.mdã«ããã«é¢ããæ å ±ããããŸãã
ember 2.10ã®ç§»è¡ã§ãããããäž»ãªåé¡ç¹ã§ãã ãããã®åé¡ã®å€ããä¿®æ£ããŠããŸãã ãããã®ãšã©ãŒãä¿®æ£ããããã®åäž/æ確ãªæŠç¥ã¯ãªãããã§ãã ãŠãŒã¹ã±ãŒã¹ã«å¿ããŠã以äžã®ã¢ãããŒããè©Šã¿ãŸãã
Ember.run.next
ã©ããããsetter
ã³ãŒããcomputed properties
ããã©ã€ããµã€ã¯ã«ããã¯ãŸãã¯event handlers
ã«ç§»åããŸããç§ãã¡ã¯ããã«ãå€ãã®å°é£ãæ±ããŠããŸãã éå»æ°å¹Žã«ããã£ãŠãæ®ãç«ã®ããŒã¿ã¹ãã¢ãã£ãã·ã¥ããç¹å®ã®ã¿ã€ãã®æåã®èŠçŽ ãèªåçã«éžæããããªãã®éã®ããããããŠã³ãèç©ããŠããŸããã ããã«ãããããŒãžã®äžéšãããããããŠã³éžæã«ãã£ãŠé§åããããããåã¬ã³ããªã³ã°ãçºçããŸãã ããããããŠã³ã䜿çšãããŠããåããŒãžã®ãªã¹ãã®æåã®é ç®ãå ¥åããŠéžæããããã«åãã³ãŒããç¹°ãè¿ããããªãã®ã§ãã©ãããã°ãããããããããŸããã
@scottmessingerãã£ãŒãããã¯ãããããšãã ã³ã³ããŒãã³ãã䜿çšãããšãããªãããŸãããããšã«ãªããŸããã ç§ã¯ãªããšãããã¯ãã©ããã³ã°ãšã©ãŒãåãé€ãããšãã§ããŸããããããŠç§ã®ã³ãŒãã¯ããã®ããã«ããªããããã ãšæããŸãã
Kris Seldenã«ã¯ããããããããã°ããããã®äŸ¿å©ãªãã³ãããããŸãã
ããã§æé ã®æŠèŠã詳ãã説æããŸããïŒ https ïŒ
ç§ã¯ããã¯ãã©ããã³ã°ã¢ãµãŒã·ã§ã³ã¡ãã»ãŒãžã®æ¹åã«åãçµãã§ã2.10.2-with-improved-backtracking-assertion
ãã«ããã«ããããŸããïŒ
åïŒ
message.message_goal.description
åã®ã¬ã³ããªã³ã°ã§<(subclass of Ember.Model):ember3486>
message.message_goal.description
2åå€æŽããŸããã ããã¯Ember1.xã§ã¯ä¿¡é Œæ§ãäœãäœéã§ãããããµããŒããããªããªããŸããã 詳现ã«ã€ããŠã¯ã httpsïŒ//github.com/emberjs/ember.js/issues/13948ãåç
§ããŠãã ããã
åŸïŒ
message.message_goal.description
åã®ã¬ã³ããªã³ã°ã§<(subclass of Ember.Model):ember3486>
message.message_goal.description
2åå€æŽããŸããã ããã¯ã§ã¬ã³ããªã³ã°ãããcomponent:message-edit-expanding-container-component
ãšã§å€æŽcomponent:rules/predicate-date-value-component
ã ããã¯Ember1.xã§ã¯ä¿¡é Œæ§ãäœãäœéã§ãããããµããŒããããªããªããŸããã 詳现ã«ã€ããŠã¯ãïŒ13948ãåç
§ããŠãã ããã
æºåãæŽãåã«ããã¹ãããšãããã€ããããŸãããæ°äººã®äººãã¢ããªã§ãããè©ŠããŠã¿ããšéåžžã«äŸ¿å©ã§ãã / ccã§@fivetanleyã@bryanhickersonã@revanarã@phammersã@scottmessingerã@ tharrington1ã@ manimis902ã@jakesjewsã@ elwayman02ã ã¢ããªã«çæ³çã§ãªãã¢ãµãŒã·ã§ã³ã¡ãã»ãŒãžã衚瀺ãããå Žåã¯ãç¥ãããã ããã
è©ŠããŠã¿ãã«ã¯ã bower.json
ãæŽæ°ããŠã次ã®ããã«æ®ãç«ã®äŸåé¢ä¿ãå«ããŸãã
{
"name": "backtracking",
"dependencies": {
"ember": "intercom/ember#2.10.2-with-improved-backtracking-assertion",
"ember-cli-shims": "0.1.3"
},
"resolutions": {
"ember": "2.10.2-with-improved-backtracking-assertion"
}
}
ãã®ãã«ããå®è¡ããŠãããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã¯ã https ïŒ ã
1.11.0ã«ããªã¢ãã«ããã«ããããŸãã
ããã¯ã¿ã€ããã¹ã§ããïŒ
@rwjblueããããšããããã¯ã¿ã€ããã¹ã§ããã æŽæ°ããŸãã
@GavinJoyceãããåŒãåããŠãããŠããããšãïŒ ç§ã¯ãããç§ãã¡ã®ã¢ããªã§è©ŠããŸããããåã®ã¡ãã»ãŒãžãããééããªã_ãã£ãš_圹ã«ç«ã¡ãŸãã æ®å¿µãªãããå€æŽããããšéç¥ãããããããã£ã¯ããšã©ãŒã¡ãã»ãŒãžã§ç€ºãããã©ã¡ãã®å Žæã§ãæããã«å€æŽãããŠããªãããããã®åé¡ãç°¡åã«ä¿®æ£ããããšã¯ã§ããŸããã ãã®çç±ã¯ããããããŸããããæ¥å¹Žã¯ããã«æãäžããŠãããããšæããŸãã
@Dhaulagirièå³ãããã°ã
FWIWããã«é¢é£ããå¥ã®åé¡ãèŠã€ããŸããïŒ https ïŒ
ãŸããã¿ãã³ã³ãããŒã«ãæ®ãç«ã®çŽã«æã£ãŠããããã®é²è¡äžã®åãçµã¿ã§ãã°ãèŠã€ããããšãããšãã«@GavinJoyceã«ãã
@bjornharrtellç§ãè©Šãããšãã§ãã
^æ®ãç«ã®çŽã®åé¡ã«é£ã³èŸŒãã®ã«å°ãæéãããããŸããïŒhttps://github.com/miguelcobain/ember-paper/pull/590ïŒã ã®ããã ïŒ
{{yield}}
ãå«ãã³ã³ããŒãã³ãã¯ãæçšãªãœãŒã¹ãšããŠå ±åãããŸããããããããããã»ã©æçšã§ã¯ãããŸããã§ããïŒã¢ããªã³ã®ãã°ã§ããå Žåãšããã§ãªãå ŽåããããŸããã httpsïŒ//github.com/DockYard/ember-one-way-controls/issues/136ã§ãã®ãšã©ãŒãçºçããŸãã
åé¡ãèŠã€ãããŸããã
ãšã³ããªãã€ã³ããæã€ããã¯ã¹ã€ã³ã䜿çšããŠãããã¯ã¹ãããã³ã³ãããŒã©ãŒã®åãããããã£ãæŽæ°ããŠããŸãã ãããã¯æããã«ç°ãªãããããã£ã§ãããªããªãããããã¯åã«ç°ãªãã³ã³ãããŒã©ãŒã«å±ããã¢ãµãŒã·ã§ã³ã倱æããŠjsããããã¯ããããã§ãã
ããã¯ã¹ã€ã³ãããã€ãã®ã³ã³ãããŒã©ãŒã«ã¢ã³ã©ããããŠãã¹ãããã«ãŒãéã移è¡ããŠåçŸããŸãããåçŸãããŸããã§ããã
ä»ã®ãšãããç§ã¯ããã¯ã¹ã€ã³ãåãé€ãããšããŠããã®ã§ãåã«ããã殺ããŠåé¿çãäœæããŸãã
ãã®åã¬ã³ããªã³ã°ã®åé¡ãçºçããŠããæå¹ãªãŠãŒã¹ã±ãŒã¹ããããšæããŸãã ç§ãã¡ã®ã¢ããªã«ã¯ãããã€ãã®ç¶æ ïŒOKãæ€èšŒãèŠåããšã©ãŒïŒãå«ããã¿ã³ããããŸãã ããã¯ãçŸåšã®ç¶æ ã衚瀺ããç¹å®ã®ããšãçºçãããšãã«æ€èšŒããæ€èšŒãŸãã¯ã¢ã¯ãã£ãåã®çµæã«åºã¥ããŠãããŸããŸãªãã®ïŒã¹ãããŒãããŸããŸãªãã¿ã³ããã¹ããããŸããŸãªãã¿ã³ã¯ã©ã¹ïŒã衚瀺ããã³ã³ããŒãã³ãã§ãã
init()
ã§æ€èšŒã確èªããæ€èšŒã®å¿çã«åºã¥ããŠãé©åãªãã¿ã³ã®ç¶æ
ãèšå®ããŸãã ãã¿ã³ã¯ã©ã¹ã¯ããã¿ã³ã®ç¶æ
ã«åºã¥ããŠé©åãªã¯ã©ã¹ãèšå®ããèšç®ããããã£ã§ãã initã§çºçãããããã€ã³ã¹ã¿ã³ã¹åæã«ã¹ããŒã¿ã¹okã§éå§ããå¿çã«åºã¥ããŠããŒãžã§ã³ãšæçµç¶æ
ãæ€èšŒããŠãããããæ€èšŒã«ç§»è¡ããããããã®ãšã©ãŒãããªã¬ãŒãããŠããããã§ãã ãã ãããŠãŒã¹ã±ãŒã¹èªäœã¯åŠ¥åœã§ããããã«æããããããçºçããŠããç¶æ
ã®å€åã劥åœã§ããããã«èŠããŸãã
@ tundal45ã¯ãééã£ããšã©ãŒã§ãããšæãããããšã
@ Blackening999 @ tundal45ãŠãŒã¹ã±ãŒã¹ãããããåãããšãã§ããŸããïŒ
@chancancode @ Blackening999ããã«ããã«æçš¿ããããšæããŸãã è¿ éãªå¯Ÿå¿ããããšãããããŸãã
@chancancode https://ember-twiddle.com/936d549b5625b0cf4f3c945d0ed04d3b?openFiles=components.button-with-state.jsãã²ããã«ãªã
ããã¯ããã€ãã®èšç®ãããããããã£ã§èŠãããŸããããã®ãã¡ã®1ã€ã¯åçŽãªEmber.computed.or
ã§ãã ãã®å Žåã @ manimis902ã®ææ¡ã¯ã©ããåœãŠã¯ãŸããªãã®ã§ãé©åãªåé¿çã¯äœã§ããããã
æ©èœã®ãã©ã°ã¯@chancancodeã§èšåãããŠããtharrington1èšå
ãã©ã°ãååšããªãããšãç§ãç¥ãéãã @ cbou
ãããã®éæšå¥šéç¥ãåŠçããæ¹æ³ãå®å
šã«ã¯ããããŸããã§ããããŸããä¿®æ£ãæå¹ãã©ãããããããŸããã§ãããã init()
ã³ã³ããŒãã³ãããã¯ã§AJAXãªã¯ãšã¹ããå®è¡ããŠãããããå¥ã®å€ã®å€æŽãããªã¬ãŒãããŸããããµãŒãã¹ã®ããããã£ïŒãªã¢ãŒããµãŒããŒã«ã¢ã¯ã»ã¹ãããã©ããã远跡/衚瀺ããããïŒã
AJAXãªã¯ãšã¹ãã³ãŒããinit()
ã³ã³ããŒãã³ãããã¯ããdidRender()
ã³ã³ããŒãã³ãããã¯ã«ç§»åããŸããããéæšå¥šã®éç¥ã解決ãããããã§ãã
@ lvl99ç§ãåãããšãããŸããã
ãšã³ã¿ãŒãã©ã€ãºãããžã§ã¯ãã2.3ããEmber2.12ã«ã¢ããã°ã¬ãŒãããããšæžåœã«åãçµãã§ããŸãã ç§ãã¡ã®ãããžã§ã¯ãã«ã¯ãæ€èšŒã¢ããªã³ãšåå¥ã®ãã©ãŒã ã³ã³ããŒãã³ãã¢ããªã³ããããŸãã æ€èšŒã¢ããªã³ã¯Ember.componentsã§æ©èœããŠæ€èšŒãšã©ãŒãçæãããã©ãŒã ã³ã³ããŒãã³ãã¢ããªã³ã¯ãã«ããŒãä»ããŠæ€èšŒã¢ããªã³ã«ãã£ãŠçæããããšã©ãŒã衚瀺ããŸãã ã¢ããªã³ã¯è€éãããŠãœãŒã¹ã³ãŒããå ±æã§ããŸããã ãããã£ãŠãç§ãã¡ãçŽé¢ããŠããã±ãŒã¹ã説æããããã«ã次ã®ã²ãããäœæããŸããã
äžããããäŸã«ã¯ãç¬èªã®æ€èšŒãšã©ãŒãçæãã責任ããã2ã€ã®ã³ã³ããŒãã³ãïŒ person-detail
ãšaddress-detail
ïŒãå«ãŸããŠããŸãã address-detail
ã«ãã£ãŠçæãããæ€èšŒãšã©ãŒã¯ã errors
èšç®ãããããããã£å
ã§ã¹ããŒãããã¢ã¯ã·ã§ã³ãä»ããŠãå«ãŸããŠããã³ã³ããŒãã³ãïŒ person-detail
ïŒã«ã«ã¹ã±ãŒããããŸãã åã³ã³ããŒãã³ãã«ãã£ãŠçæããããšã©ãŒã¯ããã«ããŒerror-formatter
ã®å©ããåããŠã error-displayer
ã³ã³ããŒãã³ãå
ã«è¡šç€ºãããŸãã æäŸãããŠããã³ãŒãã¯ãã芧ã®ãšããæ£åžžã«æ©èœããŠããŸãã
ããã; 次ã®ãããªéæšå¥šã®èŠåããããŸãïŒ DEPRECATION: The
ãšã©ãŒproperty of
is an
Ember.Binding connected to
validatable.errors.name , but
Ember.Binding is deprecated. Consider using an
ãšã€ãªã¢ã¹computed property instead. [deprecation id: ember-metal.binding] See http://emberjs.com/deprecations/v2.x#toc_ember-binding for more details.
ãããåé¿ããããã ãã«ããŒerror-formatter
移åããè¡çªå·9ãã³ã¡ã³ãã¢ãŠãããè¡çªå·8ã®ã³ã¡ã³ãã解é€ããŠãèŠåã®èª¬æã§ææ¡ãããŠããããã«ããŸãã
ä»ãç§ãã¡ã¯æªåé«ãAssertion Failed: You modified "error" twice on <Ember.Object:ember338> in a single render. It was rendered in "component:error-displayer" and modified in "component:error-displayer". This was unreliable and slow in Ember 1.x and is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.
ã«ã¶ã€ãããŸããããªããã®ãšã©ãŒãçºçããã®ãç解ããŠããŸãã address-detail
s errors
èšç®ããããã£å
ã§ã¢ã¯ã·ã§ã³ãããªã¬ãŒãããšã errors
èšç®ããããã£ã®person-detail
ãåèšç®ãããæ¢ã«ã¬ã³ããªã³ã°ãããŠããã³ã³ãã³ãããã®ãšã©ãŒãåŒãèµ·ãããŠããããã§ãã ã ãããç§ãã¡ãåŠã³ããããšã§ãïŒ
Ember.Binding
ãšEmber.computed.alias
ã¯ãåèšç®ïŒåã¬ã³ããªã³ã°ïŒãã§ãŒãºã«é¢ããŠã確ãã«ãŸã£ããç°ãªãåäœãããŸãã æ£ç¢ºãªéãã¯äœã§ããïŒ åè
ã®ä»£ããã«åŸè
ã䜿çšããããšãææ¡ããããšã¯ãã³ãŒããå£ããŠããããã§ãã å°ãªããšãç§ãã¡ã®å Žåã¯ãEmber.run.scheduleOnce('afterRender', ...)
ã¹ããŒãã¡ã³ãã§ããªã¬ãŒããã©ããã³ã°ã¢ã¯ã·ã§ã³ãæ€èšããŠããŸãã ããã¯æ£ããæ¹æ³ã§ããïŒFWIWãå Žåã«ãã£ãŠã¯äºæ³ãããé »ç¹ã«ã³ã³ããŒãã³ããåã¬ã³ããªã³ã°ãããã®ãèŠãŠããŸããã åã¬ã³ããªã³ã°ã®åå ã远跡ããããšã¯ãå®è¡ã«ãŒããšåæãããããšãå€ããããéåžžã«æéãããããŸãã ãã®é åã«ã·ã§ãŒãã«ããããããã°ã®ããªãã¯ããããã©ããç¥ãããã§ãã
ãããã°ãã«ãã§ãã®ã¢ãµãŒã·ã§ã³ããã£ãããŸãã¯æå¶ããæ¹æ³ã¯ãããŸããïŒ ã»ãšãã©ã®å Žæã§äžèšã®ããã«ãªãã¡ã¯ã¿ãŒãä»ããŠããã远跡ããŠä¿®æ£ããŸããããããªãé åºãªãã®ã1ã€ã2ã€ãããŸãã ããç¹å®ã®ã±ãŒã¹ã§ã¯ããªããžã§ã¯ããç Žå£ããŠããé·ç§»ããŸãã ç Žæ£ããããªããžã§ã¯ãïŒAPIäžïŒã¯ãããã«ããã€ãã®ãªããžã§ã¯ããã¢ã³ããŒã/ç Žæ£ããããã«ããã·ã£ãŒéç¥ãéä¿¡ããŸãã
ãããã¯ã·ã§ã³ãã«ãã§ã¯ããªããžã§ã¯ããç Žæ£ããŠãããšã«ãã移è¡ããã ããªã®ã§ãåã¬ã³ããªã³ã°ã¯åé¡ã«ãªããŸããïŒãããã£ãŠãã«ãŒãå šäœãç Žæ£ãããŸãïŒã ãã ããéçºãã«ãã§ã®ã¢ãµãŒã·ã§ã³ã¯ããµã€ãã埩å ããããã«æŽæ°ãå¿ èŠãªãããéåžžã«èç«ããããã®ã§ãã ãšã©ãŒãçºçããçç±ã¯ç解ã§ããŸããããã®å Žåããšã©ãŒãåé¿ããããã«éåžžã«è€éãªãªãã¡ã¯ã¿ãªã³ã°ãè¡ãããã«ãŒãå šäœãç Žå£ãããŠããããããããã®å Žåãåé¡ãããŸããã ããããã£ãã/æå¶/èŠåã«å€æŽããæ¹æ³ã¯ãããŸããïŒ try / catchãšã«ãŒãã®ãšã©ãŒãã³ãã©ãŒãè©ŠããŸããããã©ã¡ããæ€åºããŸããã§ããã
@ feanor07ãã§ã«ã¬ã³ããªã³ã°ãããããããã£ãç¡å¹ã«ããã¢ã¯ã·ã§ã³ãgetå ããéä¿¡ãããšãããŒã¿ã®éæµãçºçããŸãããµã€ã¯ã«ã䜿çšãããã€ã³ãã£ã³ã°ã§ã¯ãé æ¹åãåè ãšããŠæ€åºããããµã€ã¬ã³ãã«éžæãããŸãããããããããŒã¹ã«ãŒãããå Žåãããã«ã¯å€§ããªã³ã¹ããããããŸããããã€ãã®ããšãããããœãŒã¹ã«æ»ããŸãã
åºæ¬çã«ã埪ç°äŸåé¢ä¿ããããããŒã¿ããããŒããŠã³ããå¿ èŠããããŸããæ€èšŒãå®è¡ããåã«ãšã©ãŒãã¬ã³ããªã³ã°ããªãã§ãã ããã ã¢ãã«ãšãšã©ãŒãçæãã芪ã³ã³ããŒãã³ãã§æ€èšŒããŠããã©ãŒã ããããã¯å ã«ã¬ã³ããªã³ã°ã§ããŸãã
@ feanor07 Ember.run.scheduleOnce...
ã¯æ©èœããŸããset
Ember.run.schedule("afterRender", () => { ... });
ã
@neilthawaniã¯ãšã©ãŒãé ãå¯èœæ§ããããŸãããå¿
ãããåé¡ã解決ãããšã¯éããŸããã ãã®ãšã©ãŒã¯ããããã1åã ãèšå®ããå¿
èŠãããã®ã«ãå€ã2åèšå®ããŠããããšã瀺ããŠããŸãã set
1ã€ãschedule
ã«å
¥ããããšã§ã2çªç®ã®ã»ãããé
ãããŠãå¥ã®å®è¡ã«ãŒãã§çºçããããã«ããŸãã 1åã ãã¬ã³ããªã³ã°ããå¿
èŠããããšãã«ã2åã¬ã³ããªã³ã°ãããšããäž»èŠãªåé¡ã¯ä¿®æ£ãããŠããŸãããã¬ã³ããªã³ã°ãå¥ã
ã®å®è¡ã«ãŒãã§è¡ãããããã«ãªã£ããããEmberãã ãŸããŠåé¡ããã£ãããšãèªèãããŸããã§ããã
@ elwayman02ããŒãã ããããšãã åºæ¬çã«å®å šã«ãã€ã³ããéããã
ç·šéïŒããã§èŠåŽããåŸãç§ã¯ç§ãå¿«é©ã§ãã£ããããããã€ãã®afterRenders
ãæ¿å
¥ããŸããã ããŒã¿vizã³ã³ããŒãã³ãã®1ã€ã«ãããŒã«ããããåãæ¿ããclick
ãã³ãã©ãŒããããŸãã Ember.run.schedule("afterRender", () => { ... });
å
ã«isDisplaying
ãã©ã°ãèšå®ãããšãå®éã®åé¡ããããã°ã§ããŸãããããã¯ãå®éã«ã¯ãããŒã¿vizã³ã³ããŒãã³ããšããŒã«ãããã³ã³ããŒãã³ãã®äž¡æ¹ãåŒã³åºãã³ã³ãããŒã©ãŒã®ããã¯ãã©ãã¯ã§ããã
tl; drïŒç§ã¯ãããããã«ä¿æããŸããã§ããïŒ Maximum call stack size exceeded
ãšã©ãŒãäžåºŠçºçããŸããïŒããå®éã®åé¡ãæããã«ãªããŸã§ãããã䜿çšããããšã¯ãããã°ã«åœ¹ç«ã¡ãŸããã
ã¢ããã°ã¬ãŒãããã°ããã®ä»ã®äººã®ããã®PSAïŒäžèšã®@GavinJoyceã«ãã£ãŠèšåãããæ¹åããããããã¯ãã©ããã³ã°åã¬ã³ããªã³ã°ãã¢ãµãŒã·ã§ã³ãšã©ãŒã¯ãå®éã«ã¯Ember2.11ã«å«ãŸããŠããŸãã ãŸãã2.11ã«çŽæ¥ãžã£ã³ããããšåœ¹ç«ã€å ŽåãããããšãããŠããŸãã
ã¿ããªãç§ã¯ããã€ãã®å©ããå¿ èŠã§ãïŒãã®ãšã©ãŒã¯ãå¥ã®ããããã£ã«ãå±ãããã¢ãã«ããããã£ã䜿çšããããšãããšè¡šç€ºãããŸãã 空çœã®ãããžã§ã¯ããäœæããŸããããããã§ãåãããšã衚瀺ãããŸãã ç§ã¯äœãééã£ãŠããã®ã§ããïŒ
ãŸããããã¯ãšã³ãã§ã¯ã.NetCoreãšJSONAPI .Net CoreïŒhttps://github.com/Research-Institute/json-api-dotnet-coreïŒã䜿çšããŠããŸã-æ瀺ã«åŸããŸãã
ãã®æç¹ã§UIã¬ã³ããªã³ã°ã¯å£ããŠããŸãããããŒã¿ãèªã¿èŸŒãŸããç®çã®å€ã確èªã§ããŸãã
// Profile Model:
import DS from 'ember-data';
export default DS.Model.extend({
'firstName': DS.attr(),
'lastName': DS.attr(),
'applicationUser': DS.attr(),
'contactProfile': DS.belongsTo('address', {
async: true
}),
'companyProfile': DS.belongsTo('address'),
'companyMailingAddress': DS.belongsTo('address'),
"companyPhysicalAddress": DS.belongsTo('address')
});
// Address Model:
import DS from 'ember-data';
export default DS.Model.extend({
'address1': DS.attr(),
'address2': DS.attr(),
'city': DS.attr(),
'state': DS.attr(),
'zipCode': DS.attr(),
'country': DS.attr(),
'website': DS.attr(),
'phoneNumber1': DS.attr(),
'phoneExtension1': DS.attr(),
'phoneNumber2': DS.attr(),
'phoneExtension2': DS.attr(),
'email': DS.attr(),
});
// Adapter settings
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api/json',
});
DS.JSONAPISerializer.reopen({
keyForAttribute(key) {
return key;
},
keyForRelationship(key) {
return key;
}
});
// Route
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
profile: this.store.findRecord('profile', 1)
});
}
});
// Template
{{model.profile.contactProfile.address1}}
ãããŠç§ãåŸããšã©ãŒïŒ
ã¢ãµãŒã·ã§ã³ã«å€±æããŸããïŒãmodel.profile.contactProfileãã2åå€æŽããŸãã
PSïŒããããã£ãååŸããããã«Ember.computedã¡ãœããã䜿çšããããšããŸããããããã¯æ©èœããŠããããã§ãã ããã¯å¿ èŠã§ããïŒ
æŽæ°ïŒããŒã¿ã{{#each}}ãã«ããŒå ã§æ£åžžã«èªã¿èŸŒãŸãããããã³ãã¬ãŒãã«çŽæ¥èªã¿èŸŒãŸããªãããšãçºèŠããŸããã
@lbarsukov
ããããã httpsïŒ//github.com/emberjs/data/issues/5023ã«é¢é£ããŠãããããã¯ãã©ããã³ã°ã®åã¬ã³ããªã³ã°ã¯ã links
ããããã£ãèšå®ãããŠããjsonapiå¿çã®é¢ä¿ã«ãã£ãŠåŒãèµ·ããããŸãã
ããã¯ç§ã«ãšã£ãŠã®åé¡ã§ãããEmber Data2.13.2ã®åŸã«å§ãŸããŸããã ember-dataïŒ2.13.2ã䜿çšããŠãããã§åé¡ã解決ãããã©ããã確èªããŠãã ããã
@ daniel-de-witããã§ãã¹ã¿ãŒã«èŠªæãç«ãŠã-ããã¯å®éã«æ©èœããŸãã ããã¯ä»ãç§ããããããã®ã«å¿ èŠãªããšãããŸããç§ã¯ããã«æºè¶³ããŠããŸãã
@lbarsukov @ daniel-de-witãã®åé¡ãä¿®æ£ããæ°ããããŒãžã§ã³ã®æ®ãç«ããŒã¿ããªãªãŒã¹ããŸããã
@lbarsukovããã¯ããªãã®å®çŸ©ãããé¢ä¿ãšé¢ä¿ããããšæããŸãã belongsTo
1ã€ïŒãŸãã¯ããã€ãïŒãhasMany
ãŸãã
質åãšåçã®2ã€ã®ã¢ãã«ããããšããŸãã 質åã«å¯ŸããŠ10ã®åçãè¿ããããå質åã·ãªã¢ã©ã€ã¶ãŒããã®åçãåç §ããŠããå Žåã¯ãé¢ä¿ãé©åã«å®çŸ©ããå¿ èŠããããŸãã
// Question Model:
export default DS.Model.extend({
'answers': DS.hasMany('answers'), // if you never reference question.answers you can omit this
...
});
// Answer Model:
export default DS.Model.extend({
'question': DS.belongsTo('question'),
...
});
ããŒã¿ãè€æ°ã®è³ªå/åçã®ãã¢ã®å®çŸ©ã«åºããããååšããªãå Žåã¯1-1ã®é¢ä¿ãæåŸ ããŠãã¬ã³ããªã³ã°ã®éäžã§è³ªåãå€æŽããããšæšæž¬ããŸãã
æåã®æçš¿ãããããã€ãã®ããã¯ãèšåãããŸããïŒ
ããã¯ããªã極端ãªäŸã§ãããåé¡ã瀺ããŠããŸãã initã«å ããŠãdidInitAttrsãdidReceiveAttrsãwillInsertElementãããã³willRenderããã¬ã³ããªã³ã°ããã»ã¹äžã«åæçã«çºçããŸãã ããã«ãããã¯ãã©ããã³ã°ã¯ãåæ¹åã«ãã€ã³ããããããããã£ã®åäœããçããåé¡ã§ããããšããããããŸãã
didInsertElement
ããã¯ãšdidRender
ããã¯ããã£ãŒã ã®ããã«æ©èœããã®ã«ãä»ã®ããã¯ãtwice render
ãšã©ãŒã§å€±æããã®ã¯ãªãã§ããïŒ
@BenjaminHorn @ Blackening999 @Dhaulagiri @DingoEatingFuzz @ Gaurav0 @GavinJoyce @Redsandro @TRMW @ Turbo87 @aklkv @alidcastano @backspace @bdiz @bgentry @bjornharrtell @bryanhickerson @buschtoens @caseklim @cbou @chancancode @danaoira @ãããšã«ã»ãã»ãŠã£ãã@fivetanley @fotinakis @gabrielgrant @ghost @jakesjews @janmisek @joukevandermaasããã¯ãŸã åé¡ã§ããããããç§ãã¡ã¯éããå¿ èŠããããŸããããªãã¯ã©ãæããŸããïŒ
ã¢ããªã®ãšã©ãŒã®ã€ã³ã¹ã¿ã³ã¹ãä¿®æ£ããŸããã
ããã«ééãããšãã¯ãã€ã§ãããããããèµ·ãããªãããã«ç©äºãåé 眮ããããšãã§ããã®ã§ãéããŠã倧äžå€«ã ãšæããŸãã
ã¯ããéããŠãã ãã
æ代ã®çµããð¬
ð
å€ãåé¡ãæèµ·ããŠç³ãèš³ãããŸããã
ããšãã°ãç§ãã¬ã³ããªã³ã°ããŠãããšããŸããã
{{this.myBool}}
ãšã©ãŒã¯Error: Assertion Failed: You modified "myBool" twice
次ã®ããã«å€æŽããããšã§ãšã©ãŒãä¿®æ£ã§ããŸãã
{{if this.myBool true false}}
åæ§ã«ãã¯ã©ã¹åãã€ã³ãã£ã³ã°ãåé¡ãåŒãèµ·ãããŠããå Žå
ç§ã¯å€æŽããããšãã§ããŸãïŒ
classNameBindings: ['myBool']
ã«
classNameBindings: ['myBool:yes:no']
ãã®ããã«èŠåãæ¶ãããšãã§ããã®ãªãããªãEmberã¯ç§ã®ããã«ãããåŠçã§ããªãã®ã§ããïŒ
ãããç§ã䜿ã£ãŠãããã¢ã³ãŒãã§ãïŒ
ãããã®ã©ããåé¡ããä¿®æ£ãããŸããã æ¬çªã¢ãŒãã«åãæ¿ããããã¢ãµãŒã·ã§ã³/æ€åºã³ãŒãã«ãã°ããããŸãã ãããã«ãããå€ãæ¶è²»ããåŽã§ã¯ãªããå€ãå²ãåœãŠã/èšå®ããåŽãä¿®æ£ããå¿ èŠããããŸãã
Okã ããããšãããããŸããã æ瀺çãªset
ãããããããã®å
ã®æçš¿ã§æŠèª¬ãããŠããããã¯ãã©ããã³ã°ã®åé¡ãç解ããŠããŸã
ããããç§ã®ãã¢ã®ã²ããã§ã¯ãç§ãèŠãéãset
ã¯ãããŸããã
_Edit_ããã¯ééã£ãŠããŸãããã€ãŸããäŸã®ããã«ãã³ãã¬ãŒãã®_subsequent_éšåããset
æ¥ãŠããªããšããããšã§ã
ããŒããç§ã¯ã²ããã§ãšã©ãŒãçºçããŠããŸãããç§ããã¹ãã¯ãªãã¯ã®ã·ãŒã±ã³ã¹ã¯äœã§ããïŒ
[éã]ãã¯ãªãã¯ããŠããã[éãã]ãã¯ãªãã¯ããŸãã ãã ãã芪ã§ã¯ãªããçæãããåã³ã³ããŒãã³ãã®éãããã¿ã³ã
åé¡ã¯ããã£ã¢ããŠã³äžã«ãæ¢ã«ã¬ã³ããªã³ã°ãããããããã£ã§set
ãåŒã³åºãã³ã³ããŒãã³ãã§focusOut
ãåŒã³åºãããããšã§ãã ã³ã³ããŒãã³ããã©ã®ããã«ãã©ãŒã«ã¹ãšã¿ã€ãã³ã°ã»ãã³ãã£ã¯ã¹ã倱ãã®ã100ïŒ
ããããŸããã ããªããè©ŠããããªãšãŒã·ã§ã³ã¯ã远跡ã·ã¹ãã ãæ··ä¹±ãããæ ¹æ¬çãªåé¡ãèŠãé ããŠããŸããšç¢ºä¿¡ããŠããŸãã æ°ããå·ã§ããã远跡ããŸãããã ãããæå¹ãªåé¡ãã©ããã¯ããããŸããããããã§èª¿æ»ãè¡ããŸãããã
æãåèã«ãªãã³ã¡ã³ã
ããã¯2.10ã®ããã°æçš¿ã§ã¯èšåãããŠããããåè¿°ã®ããã«ãéæšå¥šã®èŠåã§ã¯3.0ãŸã§ãµããŒãããããšä»¥åã«è¿°ã¹ãããŠãããããç§ã¯é©ããŸããã