AngularJS ÊÇÒ»¸ö Web Ó¦Óÿò¼Ü£¬ËüʵÏÖÁËǰ¶ËµÄ MVC ¼Ü¹¹£¬ÄÜÈÿª·¢ÈËÔ±ºÜ·½±ãµØÊµÏÖÒµÎñÂß¼¡£
¾Ù¸öÀõ×Ó£¬Òª×öµ½ÏÂÃæµÄЧ¹û£¬ÒÔǰ¿ÉÄÜÐèҪдһÁ¬´®µÄ JavaScript
´úÂë°ó¶¨ N ¶àʼþ¡£¶øÊ¹Óà AngularJS ¿ò¼Ü£¬Ò»¾ä JavaScript ¶¼²»ÓÃд¾ÍÄÜʵÏÖÁË£¬ÉñÆæ°É£¿

script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <div data-ng-app> µ¥¼Û£º <input type="number" min=0 ng-model="price" ng-init="price = 299"> <br> ÊýÁ¿£º <input type="number" min=0 ng-model="quantity" ng-init="quantity = 1"> <br> ×ܼۣº {{ quantity * price }} </div> |
ÕâµÃÒæÓÚ AngularJS ÖеÄË«ÏòÊý¾Ý°ó¶¨ÌØÐÔ(Two Way Data-Binding)£¬½«
Model ºÍ View ×Ô¶¯¹ØÁªÁËÆðÀ´£¬ÔÚ¸ü¸´ÔÓµÄÒµÎñ³¡¾°Ï£¬»¹ÓдúÂë·ÖÀëµÄºÃ´¦£¬½« DOM ²Ù×÷ºÍÓ¦ÓÃÂß¼½âñ·Ç³£ÊµÓá£
²»¹ýûÓÐÒøµ¯£¬ºÍÆäËû¿ò¼ÜÒ»Ñù£¬AngularJS Ò²ÓÐËüµÄ¾ÖÏÞ¡£CRUD ÀàÐ͵IJÙ×÷ÊÇËüËùÉó¤µÄ£¬ÏëÏë¿´ÒÔǰд¹ýµÄ¹ÜÀíºǫ́£¬¼¸ºõ´ó²¿·Ö¶¼ÊÇ´ÓÊý¾Ý¿âÖжÁÈ¡Êý¾Ý£¬È»ºó³ÊÏÖÔÚÒ³ÃæÉÏ£¬½øÐи÷ÖÖÔöɾ¸Ä²é¡£AngularJS
Ô¼¶¨ÁËÒ»Ì׹淶£¨Ô¼¶¨ÓÅÓÚÅäÖã©£¬ÓÚÊÇÄã¿ÉÒԺܱã½ÝµØ²Ù×÷Êý¾Ý¡£¶øÔÚÆäËû·½Ã棬ÀýÈ翪·¢¸´Ô Web ÓÎÏ·£¬AngularJS
ÔòÊÇÎÞÓÃÎäÖ®µØÁË¡£
Ò»¡¢AngularJS Öеľ«ÃÀÌØÐÔ
Ë«Ïò°ó¶¨
ÉÏÃæµÄÀý×ÓÒѾ˵Ã÷ÁË£¬ÎÒÃÇ¿ÉÒÔÏñ PHP Smarty Ä£°åÒ»ÑùÔÚ HTML ÖÐд±í´ïʽ£¬Óà {{ ºÍ
}} °üÆðÀ´¡£ÔÚ AngularJS ÀView ºÍ Model ÊÇÔÚ Controller ÀïÃæ°ó¶¨µÄ£¬ËùÒÔÎÞÂÛÄãÔÚ
View µÄ±íµ¥ÖÐÐÞ¸ÄÁËÄÚÈÝ£¬»¹ÊÇÔÚ Controller Àïͨ¹ý´úÂëÐÞ¸ÄÁË Model Öµ£¬Á½±ß¶¼»á¼´Ê±·¢Éú±ä»¯£¬Í¬²½¸üС£ÒòΪ
AngularJS »á¼à¿Ø £¨watch£© Model ¶ÔÏóµÄ±ä»¯£¬ËæÊ±·´Ó³µ½ View ÖС£
Filter
Filter ÀàËÆ Unix ÀïÃæµÄ | ¹ÜµÀ¸ÅÄAngularJS
°ÑËü°áµ½ÁËǰ¶Ë¡£»¹ÊǾٸöÀý×Ó£¬ÄãÃǸÐÊÜһϡª¡ª
<div>{{ 9999 | number }}</div> <div>{{ 9999+1 | number:2 }}</div> <div>{{ 9*9 | currency }}</div> <div>{{ 'Hello World' | uppercase }}</div>
|
Êä³ö½á¹û£º
9,999 10,000.00 $81.00 HELLO WORLD
|
¶þ¡¢AngularJS ÖеÄһЩ¡°¿Ó¡±
ÓÉÓÚ¹ýȥд JavaScript µÄϰ¹ßʹȻ£¬ÈËÃǺÜÈÝÒ×µô½øÒ»Ð© AngularJS µÄÏÝÚåÀï¡£ÏÂÃæµÄÄÚÈݼÙÉèÄãÒѾÁ˽âǰ¶Ë
MVC ¸ÅÄ²¢¶Ô AngularJS ÓÐÁËÒ»¶¨¾Ñ飬³õѧÕß¶ÁÆðÀ´¿ÉÄܱȽϼèÉî»Þɬ¡£
DOM ²Ù×÷
±ÜÃâʹÓà jQuery À´²Ù×÷ DOM£¬°üÀ¨Ôö¼ÓÔªËØ½Úµã£¬ÒƳýÔªËØ½Úµã£¬»ñÈ¡ÔªËØÄÚÈÝ£¬Òþ²Ø»òÏÔÊ¾ÔªËØ¡£ÄãÓ¦¸ÃʹÓÃ
directives À´ÊµÏÖÕâЩ¶¯×÷£¬ÓбØÒªµÄ»°Ä㻹Ҫ±àд×Ô¼ºµÄ directives¡£
Èç¹ûÄã¸Ðµ½ºÜÄѸıäϰ¹ß£¬ÄÇô¿¼ÂÇ´ÓÄãµÄÍøÒ³ÖÐÒÆ³ý jQuery °É¡£ÕæµÄ£¬AngularJS ÖÐµÄ $http
·þÎñ·Ç³£Ç¿´ó£¬»ù±¾¿ÉÒÔÌæ´ú jQuery µÄ ajax º¯Êý£¬¶øÇÒ AngularJS ÄÚǶÁË jQLite
¡ª¡ª ËüÄÚ²¿ÊµÏÖµÄÒ»¸ö jQuery ×Ó¼¯£¬°üº¬Á˳£ÓÃµÄ jQuery DOM ²Ù×÷·½·¨£¬Ê¼þ°ó¶¨µÈµÈ¡£µ«Õâ²¢²»ÊÇ˵ÓÃÁËAngularJS
¾Í²»ÄÜÓà jQuery ÁË¡£Èç¹ûÄãµÄÍøÒ³ÓÐÔØÈë jQuery ÄÇô AngularJS »áÓÅÏȲÉÓÃÄãµÄ
jQuery£¬·ñÔòËü»á fall back µ½ jQLite¡£
ÐèÒª×Ô¼º±àд directives µÄÇé¿öͨ³£Êǵ±ÄãʹÓÃÁ˵ÚÈý·½µÄ jQuery
²å¼þ¡£ÒòΪ²å¼þÔÚ AngularJS Ö®Íâ¶Ô±íµ¥Öµ½øÐиü¸Ä£¬²¢²»Äܼ´Ê±·´Ó¦µ½ Model ÖС£ÀýÈçÎÒÃÇÓõñȽ϶àµÄ
jQueryUI datepicker ²å¼þ£¬µ±ÄãÑ¡ÖÐÒ»¸öÈÕÆÚºó£¬²å¼þ»á½«ÈÕÆÚ×Ö·û´®Ìîµ½ input ÊäÈë¿òÖС£View
¸Ä±äÁË£¬È´²¢Ã»ÓиüРModel£¬ÒòΪ $('.datepicker').datepicker(); Õâ¶Î´úÂë²»ÊôÓÚ
AngularJS µÄ¹ÜÀí·¶Î§¡£ÎÒÃÇÐèÒª±àдһ¸ödirective À´Èà DOM µÄ¸Ä±ä¼´Ê±¸üе½ Model
Àï¡£
var directives = angular.module('directives', []); directives.directive('datepicker', function() { return function(scope, element, attrs) { element.datepicker({ inline: true, dateFormat: 'dd.mm.yy', onSelect: function(dateText) { var modelPath = $(this).attr('ng-model'); putObject(modelPath, scope, dateText); scope.$apply(); } }); } });
|
È»ºóÔÚ HTML ÖÐÒýÈëÕâ¸ö direcitve
<input type="text" datepicker ng-model="myObject.myDateValue" />
|
˵°×ÁË directive ¾ÍÊÇÔÚ HTML Àïд×Ô¶¨ÒåµÄ±êÇ©ÊôÐÔ£¬´ïµ½²å¼þµÄ×÷Óá£ÕâÖÖÉùÃ÷ʽµÄÓï·¨À©Õ¹ÁË
HTML¡£
ÐèҪ˵Ã÷µÄÊÇ£¬ÓÐÒ»¸ö AngularUI ÏîÄ¿ÌṩÁË´óÁ¿µÄ directive ¸øÎÒÃÇʹÓ㬰üÀ¨ Bootstrap
¿ò¼ÜÖеIJå¼þÒÔ¼°»ùÓÚ jQuery µÄÆäËûºÜÈÈÃÅµÄ UI ×é¼þ¡£ÎÒ֮ǰ˵¹ý AngularJS µÄÉçÇøºÜ»îÔ¾ÂÉú̬ϵͳ½¡È«¡£
ngOption ÖÐµÄ value
ÕâÊǸö´ó¿Ó¡£Èç¹ûÄãÈ¥²é¿´ ngOption Éú³ÉµÄ <select> ÖÐµÄ <option>
µÄÑ¡ÏîÖµ£¨Ã¿¸ö <option value="xxx"> µÄ value
²¿·Ö£©£¬ÄǾø¶ÔÊÇÍ÷·ÑÐÄ»ú¡£ÒòΪÕâÀïµÄÖµÓÀÔ¶¶¼»áÊÇ AngularJS ÄÚ²¿ÔªËصÄË÷Òý£¬²¢²»ÊÇÄãËùÖ¸¶¨µÄ±íµ¥Ñ¡ÏîÖµ¡£
»¹ÊÇҪת±ä¹ÛÄAngularJS ÒѾ²»ÔÙÓÃ±íµ¥½øÐÐÊý¾Ý½»»¥ÁË£¬¶øÊÇÓà Model¡£Ê¹Óà $http
À´Ìá½» Model£¬ÔÚ php ÖÐÔòʹÓà file_get_contents('php://input')
À´»ñȡǰ¶ËÌá½»µÄÊý¾Ý¡£
{{ }} µÄÎÊÌâ
ÔÚÒ³Ãæ³õʼ»¯µÄʱºò£¬Óû§¿ÉÄܻῴµ½ {{ }}£¬È»ºóÉÁ˸һϲųöÏÖÕæÕýµÄÄÚÈÝ¡£
½â¾ö°ì·¨£º
1.ʹÓà ng-cloak directive À´Òþ²ØËü
2.ʹÓà ng-bind Ìæ´ú {{ }}
½«½çÃæÓëÒµÎñÂß¼·ÖÀë
Controller ²»Ó¦¸ÃÖ±½ÓÒýÓà DOM£¬¶øÓ¦¸Ã¿ØÖÆ view µÄÐÐΪ¡£ÀýÈç¡°Èç¹ûÓû§²Ù×÷ÁË X£¬Ó¦¸Ã·¢ÉúʲôÊÂÇ顱£¬¡°ÎÒ´ÓÄÄÀï¿ÉÒÔ»ñµÃ
X£¿¡±
Service Ôڴ󲿷ÖÇé¿öÏÂÒ²²»Ó¦¸ÃÖ±½ÓÒýÓà DOM£¬ËüÓ¦¸ÃÊÇÒ»¸öµ¥Àý£¨singletons£©£¬¶ÀÁ¢ÓÚ½çÃæ£¬Óë
view µÄÂß¼Î޹ء£ËüµÄ½ÇɫֻÊÇ¡°×ö X ²Ù×÷¡±¡£
DOM ²Ù×÷Ó¦¸Ã·ÅÔÚ directives ÀïÃæ¡£
¾¡Á¿¸´ÓÃÒÑÓй¦ÄÜ
ÄãËùдµÄ¹¦ÄܺܿÉÄÜ AngularJS ÒѾʵÏÖÁË£¬ÓÐһЩ´úÂëÊÇ¿ÉÒÔ³éÏó³öÀ´¸´Óõģ¬Ê¹Óøü Angular
µÄ·½Ê½¡£×ÜÖ®¾ÍÊǺܶà jQuery µÄ·±Ëö´úÂë¿ÉÒÔ±»Ìæ´ú¡£
1. ng-repeat
ng-repeat ºÜÓÐÓᣵ± Ajax ´Ó·þÎñÆ÷»ñµÃÊý¾Ýºó£¬ÎÒÃǾ³£Ê¹Óà jQuery £¨±ÈÈçÉÏÃæ½²¹ýµÄÀý×Ó£©
ÏòijЩ HTML ÈÝÆ÷½ÚµãÖÐÌí¼Ó¸ü¶àµÄÔªËØ£¬ÕâÔÚ AngularJS ÀïÊDz»ºÃµÄ×ö·¨¡£ÓÐÁË ng-repeat
Ò»ÇоͱäµÃ·Ç³£¼òµ¥ÁË¡£ÔÚÄãµÄ $scope Öж¨ÒåÒ»¸öÊý×é £¨model£© À´±£´æ´Ó·þÎñÆ÷ÀÈ¡µÄÊý¾Ý£¬È»ºóʹÓÃ
ng-repeat ½«ËüÓë DOM °ó¶¨¼´¿É¡£ÏÂÃæµÄÀý×Ó³õʼ»¯¶¨ÒåÁË friends Õâ¸ö model
<div ng-init="friends = [{name:'John', age:25}, {name:'Mary', age:28}]"> I have {{friends.length}} friends. They are: <ul> <li ng-repeat="friend in friends"> [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. </li> </ul> </div>
|
ÏÔʾ½á¹û
I have 2 friends. They are: [1] John who is 25 years old. [2] Mary who is 28 years old.
|
2. ng-show
ng-show Ò²ºÜÓÐÓá£Ê¹Óà jQuery À´¸ù¾ÝÌõ¼þ¿ØÖƽçÃæÔªËØµÄÏÔʾÒþ²Ø£¬ÕâºÜ³£¼û¡£µ«ÊÇ
Angular ÓиüºÃµÄ·½Ê½À´×öµ½ÕâÒ»µã¡£ng-show £¨ÒÔ¼° ng-hide£© ¿ÉÒÔ¸ù¾Ý²¼¶û±í´ïʽÀ´¾ö¶¨Òþ²ØºÍÏÔʾ¡£ÔÚ
$scope Öж¨ÒåÒ»¸ö±äÁ¿£º
<div ng-show="!loggedIn"> µã»÷ <a href="#/login">ÕâÀï</a> µÇ¼ </div>
|
ÀàËÆµÄÄÚÖà directives »¹ÓÐ ng-disabled£¬ ng-switch µÈµÈ£¬ÓÃÓÚÌõ¼þ¿ØÖÆ£¬Óï·¨¼ò½à£¬¶¼ºÜÇ¿´ó¡£
3. ng-class
ng-class ÓÃÓÚÌõ¼þÐԵظøÔªËØÌí¼Ó class£¬ÒÔǰÎÒÃÇÒ²¾³£ÓÃ
jQuery À´ÊµÏÖ¡£Angular ÖÐµÄ ng-class µ±È»¸üºÃÓÃÁË£¬Àý×Ó£º
<div ng-class="{ errorClass: isError, warningClass: isWarning, okClass: !isError && !isWarning }">...</div> |
ÔÚÕâÀï ng-class ½ÓÊÜÒ»¸ö object ¶ÔÏó£¬key Ϊ CSS class Ãû£¬ÖµÎª $scope
±äÁ¿¿ØÖƵÄÌõ¼þ±í´ïʽ£¬ÆäËûÀàËÆµÄÄÚÖà directives »¹ÓÐ ng-class-even ºÍ ng-class-odd£¬ºÜʵÓá£
$watch ºÍ $apply
AngularJS µÄË«ÏòÊý¾Ý°ó¶¨ÊÇ×îÁîÈËÐ˷ܵÄÌØÐÔÁË£¬È»¶øËüÒ²²»ÊÇÈ«ÄܵÄħ·¨£¬ÔÚijЩÇé¿öÏÂÄãÐèÒª×öһЩССµÄÐÞÕý¡£
µ±ÄãʹÓà ng-model£¬ ng-repeat µÈµÈÀ´°ó¶¨Ò»¸öÔªËØµÄֵʱ£¬ AngularJS ΪÄǸöÖµ´´½¨ÁËÒ»¸ö
$watch£¬Ö»ÒªÕâ¸öÖµÔÚ AngularJS µÄ·¶Î§ÄÚÓÐÈκθı䣬ËùÓеĵط½¶¼»áͬ²½¸üС£¶øÄãÔÚд×Ô¶¨ÒåµÄ
directive ʱ£¬ÄãÐèÒª¶¨ÒåÄã×Ô¼ºµÄ $watch À´ÊµÏÖÕâÖÖ×Ô¶¯Í¬²½¡£
ÓÐʱºòÄãÔÚ´úÂëÖиıäÁË model µÄÖµ£¬view ȴûÓиüУ¬ÕâÔÚ×Ô¶¨Òåʼþ°ó¶¨Öо³£Óöµ½¡£ÕâʱÄã¾ÍÐèÒªÊÖ¶¯µ÷ÓÃ
scope.$apply() À´´¥·¢½çÃæ¸üС£ÉÏÃæ datepicker µÄÀý×ÓÒѾ˵Ã÷ÁËÕâÒ»µã¡£µÚÈý·½²å¼þ¿ÉÄÜ»áÓÐ
call back£¬ÎÒÃÇÒ²¿ÉÒ԰ѻص÷º¯Êýд³ÉÄäÃûº¯Êý×÷Ϊ²ÎÊý´«Èë$apply()ÖС£
½« ng-repeat ºÍÆäËû directives ½áºÏÆðÀ´
ng-repeat ºÜÓÐÓ㬲»¹ýËüºÍ DOM °ó¶¨ÁË£¬ºÜÄÑÔÚͬһ¸öÔªËØÉÏʹÓÃÆäËû directives
£¨±ÈÈç ng-show£¬ ng-controller µÈµÈ£©¡£
Èç¹ûÄãÏë¶ÔÕû¸öÑ»·Ê¹ÓÃij¸ö directive£¬Äã¿ÉÒÔÔÚ repeat ÍâÔÙ°üÒ»²ã¸¸ÔªËØ°Ñ directive
дÔÚÄǶù£»Èç¹ûÄãÏë¶ÔÑ»·ÄÚ²¿µÄÿһ¸öÔªËØÊ¹ÓÃij¸ö directive£¬ÄÇô°ÑËü·Åµ½ ng-repeat
µÄÒ»¸ö×Ó½ÚµãÉϼ´¿É¡£
Scope
Scope ÔÚ templates Ä£°åÖÐÓ¦¸ÃÊÇ read-only µÄ£¬¶øÔÚ controller
ÀïÓ¦¸ÃÊÇ write-only µÄ¡£Scope µÄÄ¿µÄÊÇÒýÓà model£¬¶ø²»ÊdzÉΪ model¡£model
¾ÍÊÇÎÒÃǶ¨ÒåµÄ JavaScript ¶ÔÏó¡£
$rootScope ÊÇ¿ÉÒÔÓõ쬲»¹ýºÜ¿ÉÄܱ»ÀÄÓÃ
Scopes ÔÚ AngularJS ÖÐÐγÉÒ»¶¨µÄ²ã¼¶¹ØÏµ£¬Ê÷×´½á¹¹±ØÈ»ÓÐÒ»¸ö¸ù½Úµã¡£Í¨³£ÎÒÃÇÓò»µ½Ëü£¬ÒòΪ¼¸ºõÿ¸ö
view ¶¼ÓÐÒ»¸ö controller ÒÔ¼°Ïà¶ÔÓ¦µÄ×Ô¼ºµÄ scope¡£
µ«Å¼¶ûÓÐһЩÊý¾ÝÎÒÃÇÏ£ÍûÈ«¾ÖÓ¦ÓÃÔÚÕû¸ö app ÖУ¬ÕâʱÎÒÃÇ¿ÉÒÔ½«Êý¾Ý×¢Èë $rootScope¡£ÒòΪÆäËû
scope ¶¼»á¼Ì³Ð root scope£¬ËùÒÔÄÇЩעÈëµÄÊý¾Ý¶ÔÓÚ ng-show ÕâÀà directive
¶¼ÊÇ¿ÉÓõ쬾ÍÏñÊÇÔÚ±¾µØ $scope ÖеıäÁ¿Ò»Ñù¡£
µ±È»£¬È«¾Ö±äÁ¿ÊÇа¶ñµÄ£¬Äã±ØÐëºÜСÐĵØÊ¹Óà $rootScope¡£ÌرðÊDz»ÒªÓÃÓÚ´úÂ룬¶ø½ö½öÓÃÓÚ×¢ÈëÊý¾Ý¡£Èç¹ûÄã·Ç³£Ï£ÍûÔÚ
$rootScope дһ¸öº¯Êý£¬ÄÇ×îºÃ°ÑËüдµ½ service ÀÕâÑùÖ»ÓÐÓõ½µÄʱºòËü²Å»á±»×¢È룬²âÊÔÆðÀ´Ò²·½±ãЩ¡£
Ïà·´£¬Èç¹ûÒ»¸öº¯ÊýµÄ¹¦Äܽö½öÊÇ´æ´¢ºÍ·µ»ØÒ»Ð©Êý¾Ý£¬¾Í²»Òª°ÑËü´´½¨³ÉÒ»¸ö service¡£
Èý¡¢AngularJS ÏîÄ¿µÄĿ¼½á¹¹
ÔõÑù×éÖ¯´úÂëÎļþºÍĿ¼£¿Õâ¿ÖÅÂÊdzõѧÕßÒ»¿ªÊ¼¾Í»áÓöµ½µÄÎÊÌâ¡£AngularJS
Ó¦Óÿª·¢µÄ¹Ù·½ÈëÃÅÏîÄ¿ angular-seed£¬ÆäÎļþ½á¹¹ÊÇÕâÑùµÄ£º
?css/
?img/
?js/ ?app.js
?controllers.js
?directives.js
?filters.js
?services.js
?lib/
?partials/
|
ÕâÖֽṹ¶ÔÓÚÒ»¸ö¼òµ¥µÄµ¥Ò³ app À´ËµÊÇ¿ÉÐеģ¬Ö»ÊÇÒ»µ©´úÂëÖдæÔÚ¶à¸ö
Controller »òÕß Service£¬¾ÍºÜÄÑÕÒµ½ÏëҪѰÕҵĶÔÏóÁË¡£ÎÒÃÇ¿ÉÒÔ¶ÔÎļþ°´ÕÕÒµÎñÂß¼½øÐвð·Ö£¬¾ÍÏñÏÂÃæÕâÑù£º
?controllers/ ?LoginController.js
?RegistrationController.js
?ProductDetailController.js
?SearchResultsController.js
?directives.js
?filters.js
?models/ ?CartModel.js
?ProductModel.js
?SearchResultsModel.js
?UserModel.js
?services/ ?CartService.js
?UserService.js
?ProductService.js |
ÕâÖֽṹ°Ñ²»Í¬µÄÒµÎñ¹¦Äܲð·ÖΪ¶ÀÁ¢µÄÎļþ£¬ÌõÀíÇåÎú£¬µ«ÊÇÈÔÓÐÒ»¶¨µÄ¾ÖÏÞÐÔ¡£×î´óµÄÎÊÌâÊÇÒ»¸öÒµÎñ¹¦ÄܵĴúÂë·Ö²¼ÔÚcontrollers,
models, servers Èý¸ö²»Í¬Ä¿Â¼Ï£¬Òª´ÓÖÐÌô³öÕýÈ·µÄÎļþ£¬½¨Á¢Æð´úÂë¹ØÁª£¬»¹ÊÇÓÐЩÂé·³¡£°´ÕÕ¹¦ÄܽøÐÐÄ£¿é»¯»®·ÖĿ¼½á¹¹£¬Ó¦¸ÃÒª¸üΪºÏÀíһЩ£º
?cart/ ?CartModel.js
?CartService.js
?common/ ?directives.js
?filters.js
?product/ ?search/ ?SearchResultsController.js
?SearchResultsModel.js
?ProductDetailController.js
?ProductModel.js
?ProductService.js
?user/ ?LoginController.js
?RegistrationController.js
?UserModel.js
?UserService.js |
ÕâÑùÒ²ÊÇÊÊºÏ RequireJS µÈÄ£¿é¼ÓÔØÆ÷µÄ×ÔȻֱ¹ÛµÄ´úÂë×éÖ¯·½Ê½¡£
|