ã¾ããã
ããã¯AngularJS Startup AdventCalendar ã®15æ¥ç®ã®è¨äºã§ã。14æ¥ç®:AngularJSã¨AngularJSã¢ã¸ã¥ã¼ã«ã§i18nãå®ç¾ãã(2) - Qiita [ãã¼ã¿]
æ¬ç¨¿ã§ã¯AngularJSã§ã²ã¼ã ãä½ã£ãã¨ãã«æ°ã¥ãããã¨ã¨ããå ã«、ã©ããªæãã§ã¢ããªã±ã¼ã·ã§ã³ãæ§æãããããã£ããæ¸ãã¾ã。å®éã®ã²ã¼ã ãä½ãä¸ã§ã®Tipsã¨ãã£ã¦ããã¯、åºç¤çãªãã£ã¬ã¯ãã£ãã¨ããµã¼ãã¹ã®ä½¿ãæ¹ä¸å¿ã§ãã、ã²ã¼ã ã®å®ä¾ãå¤å°æ¸ãã®ã§ãã£ã¨ã©ãåããããç解ã§ããã¯ã。ã§、ãããææ¡ã§ããã°ã²ã¼ã ãã©ãä½ããããããã¯ã。
ä¸å¿ããç¨åº¦AngularJSã®åºç¤ç¨èªãããã¯èãããã¨ãããããã®äººå¯¾è±¡ã§ã。
ããã®ã©ããã¹ã¿ã¼ãã¢ãããªãã ã¨ãæ°ã«ããªã。æ³£ããªã。
ã¡ãªã¿ã«AngularJSã¯ã²ã¼ã ãä½ãã®ã«é©ãããã¬ã¼ã ã¯ã¼ã¯ã§ã¯ãªãã§ã。
ãã£ã¨ãæ°å¤ãæä½ããã ãã®ã²ã¼ã ãªãAngularJSã§ãååã§ã。
ããããããã§AngularJSãããã!
èªå·±ç´¹ä»
ã°ãããã¡ãæ¬åºã¨ããååã§ãã³ãã³åç»ã«é»åå·¥ä½ã¨ãã®åç»ãããã¦ãã¾ã。å ¨èªåã¹ã«ã¼ããããæ©ã¨ã、念åã¹ã«ã¼ããããæ©ã¨ã、ããããã®ãä½ãã¾ãã。人æ§ã«è¨ãã¥ãã。
ããã¦æ¬ç¨¿ã§èª¬æããè¦éããã£ãã¼ã¨ããäºæ¬¡åµä½ã§ã¯ãªã(éè¦)ã²ã¼ã ãä½ãã¾ãã。
è¦éããã£ãã¼?
è¦ãã - Kantai ClickerCookieClickerã®ã¯ãã¼ã³ã§ã。
æ¬å½ã¯æ´ã«è¦éããããããã®äºæ¬¡åµä½ã®ã¤ããã§ããã、ã²ã¼ã ã¯ç¦æ¢ããã¦ããã®ã§、
ãã£ã©ã¯ã¿ã¼è¦ç´ ãåã£ã¦è¯ãããããªãè¦éãããããã便ä¹ååã®ãããªãã®ã«ãªã£ã。
æ°å¤ãå¢ããããã«æ°å¤ãå¢ããã¨ããè¶ åç´ãªã²ã¼ã ã§ã。
(æ¬æã¨é¢ä¿ã®ãªãç»åã§ã)
AngularJSã¢ããªã®å¤§ã¾ããªæ§æ
AngularJSã®ã¢ããªã±ã¼ã·ã§ã³ã¯、ãã£ãã以ä¸ã®æ§ãªæ§æã«ãªã。directive
ãã£ã¬ã¯ãã£ã。HTMLå ã«åãè¾¼ãã§è¡¨ç¤ºãå¶å¾¡ãã。å¤ã®å®éã®å ¥åºåãå¦çãã。
é å渡ãããããã©ã¼ããããã¦ãªã¹ãåºããã、å ¥åå¤ãå¤ã«ã»ãããã。
controller
ã³ã³ããã¼ã©ã¼。ng-controllerã§å¼ã¶ã¨ãã®ã¿ã°ã®é層以ä¸ã®scopeã管çã§ãã。
scopeã£ã¦ã®ã¯AngularJSã§ãã¥ã¼ã¨å¤ãããã¨ãããã¨ãã®ãªãã¸ã§ã¯ãã®ãã¨。
service
ãµã¼ãã¹。å¤ãä¿åãããèªã¿è¾¼ãã ã、ããã«ä¼´ãéä¿¡ããã。
ãã¡ããå¤ã¸ã®æä½ãå ¥ãã¡ãã£ã¦æ§ããªã。ããããã¢ãã«。
filtter
ãã£ã«ã¿ã¼。ãªã¹ãã®å 容ãå¤ãããå¤ãæ´å½¢ããããããã£ã¬ã¯ãã£ãã®è£å©çãªãã®。
ä»å使ã£ã¦ãªãã®ã§ããããã£ããåºã¦ãã¾ãã。
ã¤ã¾ãAngularJSã¯HTMLã«å©ç¨ããã³ã³ããã¼ã©ã¼ã¨ãå«ãã¦directiveã§ãã³ãã¬ã¼ããæ¸ãã¦、
controllerããã®directiveã¨serviceã®éã®å¤ã®ããåããscopeã£ã¦ã®ã使ã£ã¦ãã。
ãªãã»ã©、ãããã。
åé¨ã®è©³ç´°ã¨ã
以ä¸、詳細ã¨ããã使ã£ã¦ãæã«æã£ããã¨ã¨ã、注æç¹ã¿ãããªã®ãã¾ã¨ãã。controller
AngularJSã®å ¬å¼ã®ãµã³ãã«ãªãããè¦ã¦、ã¢ã¸ã¥ã¼ã«ãåãããã¨ãæèããªãã§æ¸ãã¨ãã¡ããã³ã³ããã¼ã©ã¼ã«ãªã£ã¦æã«è² ããªãç¶æ³ã«ãªããã¡。è¦ãç®ã¯å ¨é¨ãã£ã¬ã¯ãã£ã、å¤ã®æä½ã¯ãµã¼ãã¹ã§ãã。
ããã§å¤ãç´æ¥å¤æ´ãã¦ãã、è¦ãç®ã«é¢é£ãããã©ã°ã®å¤æ´ã¨ããã£ã¦ããªããã¶ãééã£ã¦ã。
ã³ã³ããã¼ã©ã¼éã§ã®å¤ã®åã渡ãã¨ãã§æ©ãã§ãããããªãèãæ¹ãæ ¹æ¬çã«éãå¯è½æ§ãé«ã。
directive
éã«è¨ãã¨、ãã®ä¸ã§ãªãjQueryã¨ãç´ ã§ä½¿ã£ã¦ãOK。
ãªã®ã§jQueryã®æ¡å¼µã¨ãããã®ã¾ã¾ä½¿ãã¨ãããã®ä¸ã«éãè¾¼ãã。
directiveã®compileã®ç¬¬ä¸å¼æ°ã¨ãlinkã®ç¬¬äºå¼æ°ã¨ãã¯ãã£ã¬ã¯ãã£ããã¤ãã¦ããè¦ç´ ãã®ãã®ãªã®ã ãã©、ããã¯ãã¨ãã¨jQueryãªãã¸ã§ã¯ãã®å½¢ã§æ¸¡ããã。
ã¡ãªã¿ã«AngularJSããjQueryãå ã«èªã¿è¾¼ãã§ãªãã¨jqLiteã¨ããæ©è½ç¸®å°çã«ãªã。
(ãããfindã¨ããªãã£ããremoveãç¡ãã£ãããã¦ä¸ä¾¿ãªã¨ããå¤ã)
ä½è«ã ãã©、linkã®ãµã³ãã«ã³ã¼ãã§ç¬¬ä¸å¼æ°ã®scopeã«$ãã¼ã¯ããªãã®ã¯、ããã¯ååã§å¼æ°ã決å®ããããããããªãã¦、æ®éã«é çªã§å¼æ°ã決å®ããããã ã¨ãä½ã¨ã。
ECMA3ã§æ©æ¢°çã«æ¿å ¥ãããã³ã¼ãã®ã¿ã§$ã®å©ç¨ã許å¯ãããã¨ãè¨ã£ã¦ãã®ã¨é¢ä¿æããã(ãªããã)。
æ¸ãå§ããã¨çµãããªãã®ã§é£ã°ãã¦ãããã©、directiveã¯scopeå¨ããä¸çªé¢åãªã®ã§æ³¨ææ·±ãåå¼·ããã¨ãããã。
親ã®å¤ããã®ã¾ã¾å¤æ´å¯è½ã ã£ãã(scopeãæªè¨å®ãfalse)、親ã®å¤ãä¸æ¸ãã®ã¿å¥ã®å¤ã«ãªããæå®ãããã®ã®ã¿ä¸æ¸ããå¯(scopeãtrueããªãã¸ã§ã¯ãã§æå®)ã¨ããã。
ã¡ãªã¿ã«æ®éã®å¼æ°ã¨åãããªãã¸ã§ã¯ãã®å ´åã¯åç §ã§æ¸¡ãããã®ã§、falseã§ããªãã¸ã§ã¯ãã®ããããã£ã®å¤æ´ã®ã¿ã¯åºæ¥ããããã®ã§æ··ä¹±ã®å ã«ãªã。
èªåã®ä½ã£ããã£ã¬ã¯ãã£ãã«ng-hideã¨ããçµã¿åããã¦ä½¿ãã¤ãããç¡ããªã、ã¹ã³ã¼ãã¯å¸¸ã«ä½ã£ãã»ããäºæ ããã¨ãå°ãªãã¨æã。
éã«è¨ãã¨、親ã¹ã³ã¼ãå ã§ä½¿ãã¤ãããªã、ã¹ã³ã¼ãããããã使ããªãã、親ã¹ã³ã¼ãã¨çµ¶å¯¾ã«ãã¶ããªããããªååã§å©ç¨ããªãéãå±éº。ãã£ããååãã¶ã£ããããã¨ãã¹ã«æ°ä»ãã¥ããã¦æ³£ã。
service
è¤æ°ç»é¢ã®ã¢ããªã±ã¼ã·ã§ã³ã®å ´åãserviceã¯ã·ã³ã°ã«ãã³ãªã®ã§、ãã¼ã¿ã¯å ±æããã。
ããéè¦。
angular.('ã¢ã¸ã¥ã¼ã«å',[ä¾åã¢ã¸ã¥ã¼ã«...]).factory('ãã£ã¬ã¯ãã£ãå',[å©ç¨ãµã¼ãã¹...,function(){ return ãµã¼ãã¹ã®ãªãã¸ã§ã¯ã; }]);ã¿ãããªæãã§ä½ãããã ãã©、ãã¡ãã、
var MyService = function(){ this.initialize.apply(this,arguments); } MyService.prototype = { initialize:function()... } return MyService;ã¿ããã«ã¯ã©ã¹æ¸¡ãã¦、ã³ã³ããã¼ã©ã¼å´ã§、
['$scope','MyService',function($scope,MyService){ var svc = new MyService(); }];ã¦ãªæãã§ä½¿ã£ã¦ããã。
ç§ã¯ããããæãã®ã¯ã©ã¹ã«ãã¼ã¿åå¾ããã¡ã½ããã¨ãã£ãã·ã¥ã¨ãæããã¦ä½¿ã£ãããã¦ã。
var MyService = function(){ this.initialize.apply(this,arguments); } MyService.prototype = { initialize:function()... } MyService.cache = {}; MyService.getData = function(id){ if(this.cache[id]){ //ãã£ãã·ã¥ã«ããã°ãããè¿ã return this.cache[id]; } //ãªããã°ããã¯ã¨ã³ãã¨ããããã¼ã¿æã£ã¦ãã var svc = new MyService(ããã¯ã¨ã³ãããæã£ã¦ãããã¼ã¿); this.cache[id] = svc; return svc; } return MyService;ã§MyService.getData(4);ã¿ãããªæãã§å¼ã³åºã。
factoryãå¼ã°ããã®ã¯æåã®ä¸åã ããªã®ã§、è¤æ°ç»é¢ã¨ããªãã©ã®ç»é¢ãæåã«éãã¦ã、ãã¼ã¿ãæ¢ã«èªã¿è¾¼ã¾ãã¦ãããã£ãã·ã¥ãå¼ã¶ã、ããã§ãªããªãããã¯ã¨ã³ããããã¼ã¿ãæã£ã¦ãããã¨ã«ãªã。
ä¸è¦§ã¨è©³ç´°ã®ãªã¹ããæã£ã¦ã¦、詳細ãéãã¨è¿½å ãã¼ã¿ãèªãã§ãã£ãã·ã¥ããã¨ããããã使ãæ¹ã«ä¾¿å©。æå¹æéã¨ããã£ãã·ã¥ã®å¼·å¶åé¤ã¨ãããããã®ããããã。
å°ä¼æ¢
ä½å、controller、directive、serviceã£ã¦ç¹°ãè¿ããã ãã¯ã½ã£! ã£ã¦æ°ã«ãªã£ã¦ãããã¨æãã¾ãã®ã§æ¬æã¨ã¯ç¹ã«é¢ä¿ãªãæ¿çµµã御覧ãã ãã(ãã¨ä¸åç¹°ãè¿ãã¾ã)。è¦éããã£ãã¼ã§ã®å ¨ä½ã®æ§æ
æµã®ãã©ã¡ã¼ã¿ã¼ã¨èª¬æ、æ½è¨ã®ãã©ã¡ã¼ã¿ã¼ã¨è¨å®ãªããã¯jsonã«æ¸ãã¦ãã。controller
ãã¼ã¿ã®ä¿åã¨ããã¼ãããã£ã¦ãã ã。
ä¸è¨ã®jsonã®ãã¼ã¿ãå¼ã³åºãserviceã¨ãã¯ããã¼ã®å ¥åºåserviceã¨ãã®å®è¡。ã§ãã®å¤ãscopeã«å ¥ããã ã。
directive
ãã£ã¬ã¯ãã£ãã¨ãã¦ä½ã£ãã®ã¯、ä½åã¨ãçµé¨å¤ã®ãã¼ã¨è¹ã®é¨å、æ½è¨ã®é¨å。
ä»è¦ç´ãã¨、æ½è¨ã®é¨åã¯ãã£ã¬ã¯ãã£ãã¨ãã¦åããå¿ è¦æ§ãèãã、è¹ã®é¨åãå«ãã¦ãã¸ãã¹ãã¸ãã¯ã¾ã§æ¸ãã¦ã¦ã¾ãã。
ä½åã¨ãçµé¨å¤ã®ãã¼ã¯ä¸ããããæ°å¤ã§è¦ç´ ã®é·ããå¤ãã¦ãã¼ã£ã½ãè¦ãã¦ãã ã。
è¹ã®æ°å¤ã®ãã¤ã¯、$rootScopeã®ã¤ãã³ããè¦å¼µã£ã¦æ»æããããã¯ãªãã¯ããã渡ãããæ°å¤ã表示ããã ã。
ãã®è¾ºå¾è¿°ãããã©、$watchãã©ãã§ã使ãããã¤ãã³ãã®ãããæãã®æãå¤ã。
service
ãã£ã¬ã¯ãã£ãã¨åããåé¢ããã¾ãè¨ã£ã¦ãªãç®æããã£ã¦æ§æã説æãã¥ãã。
æ¬æ¥ã ã¨ã¦ã¼ã¶ã¼é¢é£ã¨æµé¢é£ã¨æ½è¨é¢é£ãåé¢ãã¦ãããããã¯ããã¼ã¸ã®å ¥åºåãµã¼ãã¹ã«ä¾åãã¦ããããªæãã«ãã¹ãã ã£ãã¨æã。ã§、ã¯ããã¼ã¸ã®å ¥åºåã¢ã¸ã¥ã¼ã«ããã¼ãæã«ãã¼ã¿ããã£ãã·ã¥ããã、ä¸å®æéããã«ãã¼ã¿ã®å¤æ´ã確èªãã¦ä¿åããã°è¯ãã£ã。
ã¡ãªã¿ã«AngularJSã®ã¯ããã¼ã¢ã¸ã¥ã¼ã«ã¯ãã©ã¦ã¶éããã¾ã§ä»¥å¤ã®æå¹æéãè¨å®ã§ããªãã®ã§、
ã¯ããã¼ã¸ã®æ¸ãåºãã¨ãèªã¿è¾¼ã¿ã¨ãã¯èªåã§ä½ã£ã。
ã ãããçµãã£ã
ã¨ãããããã§å¤§ã¾ããªæ§é ã¯ã ãããèªããã®ã§æºè¶³ãã。ã¤ãããããªè¤éãªæ§é ãã¦ãªã。
ãã¨ãã®ä»éçºä¸ã«æã£ããã¨ãåæ。
・ã¯ããã¼ãããå£ãã
ã¯ããã¼ã¯å£ãã。ããã±ã«å ¥ãã¦èã«ç¢ãåãããçã£äºã¤。
çµæ§é·ããã¼ã¿ãJSONã«ãã¦base64ã«ããã ãã£ã¦ãã横çãªããæ¹ã ãããçµæ§å£ããå ±åãåãã。
åãããã、ããã¹ãã§ä¿åã§ããããã«ããã®ã ãã©、æ ¹æ¬çã«ç´ãæ¹æ³ã¯è¯ãåãããªã。
確èªããéãã§ã¯å ¨é¨çã£ç½ã«ãªãããã§ã¯ãªãã¦、å¾åãã¼ã¿ãåããã¿ãããªå£ãæ¹ã大åã ã£ãã®ã§、容éã«ä½è£ããããªãä¸ã¤åã®ç¶æ ãä¿åãã¦、å£ãã¦ããåã®ãã¼ã¿åç §ã¿ãããªããæ¹ãªãã¾ã 被害ã¯å°ãªããããããªã。
・ã¤ãã³ãå©ç¨($emit,$on)ã®ããã
æ®éAngularJSçã«ã¯、åãã£ã¬ã¯ãã£ãå ã§è¦ãç®ã¨ããå¤ããã¨ãã¯ä¾åæ§ã¨ãã¦æ¸¡ãã¦ããã¢ãã«ã$watchãã¦ãã®ç¶æ³ã«å¿ãã¦å¤æ´ããã¿ãããªããããã常éã£ã½ã。
ãã ããã ã¨、ã£ã¦ãããã²ã¼ã ã®ãããªDOMã®è¦ãç®å¤æ´ãè¤æ°æ¡ä»¶ã§æ±ºå®ãããã¤è¤éãªã¨ãã«ã¯、ãã£ã¬ã¯ãã£ãã«çã£ç«¯ãããµã¼ãã¹æ¸¡ããããããã¨ã«ãªã£ã¦ç¾å®çãããªã。
ãããä»åã¯å°è¦æ¨¡ãªã®ã§åé¡ã«ãªã£ã¦ãªããã©、ç§ããã£ã¡ãã£ãã¿ããã«ãã£ã¬ã¯ãã£ãå ã§ãµã¼ãã¹ã®ãã¼ã¿å¤ãããããã¨ããç®ãå½ã¦ãããªã。
ã©ãã§ä½ãå¤ãã£ã¦ããã®ã、ã©ãã«ä½ãä¾åãã¦ããã®ãã®ææ¡ãããããããªã。
ã§ã£ãããªãã¸ã§ã¯ããªãããã¾ããã¨$watchããã®ããã¡ãã¡ã«ããã¨ãããã¾ãæã。
ãã®ã¸ã、ã¤ãã³ãã¯æããã¨ããã¨åãåãã¨ãããã¯ã£ããããã®ã§、ããç¨åº¦çµ±å¶ãåããããæ°ããã。
èªãã¼ã¿ãµã¼ãã¹ã¯æµã«æ»æããããã¨ãã¤ãã³ãã§åãåã£ã¦、å¼æ°ã®æ»æåã«å¿ãã¦èªåã®è¦æ°ãæ¸ããã¦、
ããï¼ã«ãªã£ããæåã¤ãã³ããçºçããã。
æµãµã¼ãã¹å´ã¯æ»æç¶æ ã«ããéã¯ä¸å®æéããã«æ»æã¤ãã³ããçºçããã¦、ãã¬ã¤ã¤ã¼å´ã®æ»æ、ã¾ãã¯ã¯ãªãã¯ã®ã¤ãã³ããåãã¦èªåã®è¦æ°ãæ¸ããã¦、ããï¼ã«ãªã£ããæåã¤ãã³ããçºçããã¦æ»æç¶æ ã解é¤、ãããã¯ãã¬ã¤ã¤ã¼ã®æåã¤ãã³ããçºçãã¦ãæ»æç¶æ ã解é¤ãã。
ã¨ãããããªæã。
・ããããåã
ããããä¸è¨ã®ããã«$watchãå¤ç¨ãã¦ãªãã¸ã§ã¯ãã¨ããç£è¦ãã¾ããæ§æã«ãªãã¨、ææ¡ãé£ãããªãã¾ã ããææªã®å ´åã¯ã«ã¼ãããã、ããã§ãªãã¦ãç¡é§ãªå¼ã³åºããå¢ããå¾åã«ãã。
ããã¯å¤§å¤ã«åã。
æåã®ãã¡ä½ãèããã«$watchãæ´»ç¨ãã¾ãã£ã¦é©å½ã«æ¸ãã¦ããã¨、ãªããç¥ããªããã©ãã®ããããã£å¤ããã ãã§、é¢ä¿ãªãå¦çãå±±ã»ã©æµãããªãã¦ãã¨ã«ãªã£ããã¨ããã£ã。
filterãªããã¨ãã«ãããªãããã。console.logã§åºåãã¦ã¿ãã¨ä½æ ãã¡ããã£ã¨åãããã³ã«ãã£ã«ã¿åãã¦ãã¿ããã«ãªã。
ãªãã¸ã§ã¯ãã®ããããã£ãç£è¦å¯¾è±¡ã«ã§ããã®ã§ããã¾ã大ããªãªãã¸ã§ã¯ãå ¨ä½ãè¦å¼µããªãã§、å¿ è¦ãªé¨åã ãã«ãã¹ããªã®ã ã¨æã。
(ãããã第ä¸å¼æ°ã«true渡ããªãã¨ããããã£ãå«ãããªãã¸ã§ã¯ãå ¨ä½ã¯è¦å¼µããªãã、ãã¨ãã¨ããããæ³å®ãªã®ã ã¨æã)
ã¾ã¨ã
å人çãªå°è±¡ã§è¨ãã¨、ã¢ã¯ã·ã§ã³ã²ã¼ã ã¿ãããªåãã®å¤ããã®ã§ãªããã°、AngularJSã§ã²ã¼ã ãä½ãã®ã¯çµæ§ç°¡åã§æ¥½ããã®ã§ã¯ãªããã¨æãã¾ãã。$watchå¨ãã¨ã$scopeå¨ãã¯ããããããã¨ããã£ã¦、æ··ä¹±ãããã¨ãããã¾ãã、ãã®è¾ºãããç¨åº¦æ´çããã、ãããããã¨ã¯ãã¹ãã§ã¯ãªãã¨ãããã¨ãåããã°、æ¬å½ã«æ¥½ã«æ¸ãã¦è¯ãã¨æãã¾ã。æéã¨å ´ãæ®ã£ã¦ããã°ãã®AdventCalendarå ã§、scopeãããã«ã¤ãã¦ãæ¸ããã°ãããªã¨æãã¾ã。
宣ä¼
è¦ããã¯ä»å¹´å¹´æ«ããæ¥å¹´åãããã¾ã§ã®éã«ã¢ãããã¼ããäºå®ãã¦ãã¾ã。
ã¡ãªã¿ã«ç§ãä½ã£ãã²ã¼ã ãããã¡ããã®ä»ã、ãããã®å¶ä½åç»ã®ãç¥ããã¯ãã®ããã°(RSS)ã@sashimizakanaã«æ²è¼ãã¦ãã¾ã。åãã°ãããã¡ãã®ææ°æ å ±ããã§ãã¯ã !