½éÉÜ
AngularJS µÄ¿âÀïÃæÓкܶණÎ÷£¬µ«±¾ÎÄÖÐÎÒÖ»ÏëרעÓÚСµÄ£¬Õë¶ÔÌØ¶¨Ö÷ÌâµÄ¿â£¬ÎÒÏàÐÅͨ¹ýËüÃÇÄܶÔAngularÓÐÒ»¸ö½ÏºÃµÄ½éÉÜ.
Àí½âÕâÆªÎÄÕ²¢²»ÐèÒªÄãÓÐÈκÎAngularÏà¹ØµÄ£¬ÉõÖÁÊÇJavaScriptµÄ¾Ñ顣ϣÍûÄãÄÜ´Ó±¾ÎÄÖп´µ½Ò»Ð©Ê¹ÓÃAngularµÄºÃ´¦£¬²¢ÀÖÓÚ¶¯ÊÖ³¢ÊÔ.
±³¾°
ÎÒʹÓÃAngularÓÐÒ»¶Îʱ¼äÁË£¬¶øÔÚѧϰAngularµÄʱºò£¬ÎÒҲϲ»¶¹¹½¨Ò»Ð©ÑùÀý£¬ËùÒÔµ±ÎÒÒ»¿ªÊ¼ÉîÈë½øÈ¥µÄʱºò£¬¶ÔÓÚÄ£¿é»òÕßJavaScriptµÄÉè¼ÆÄ£Ê½£¬ÎÒҲûÓжàÏ룬ÄÇÑù¶Ô±£³Ö´úÂë×éÖ¯ºÍÌõÀíÐÔÓаïÖú.
ÄǾÍÊÇËùÓеÄÖØµã£º±£³Ö´úÂëµÄ×éÖ¯ºÍÌõÀíÐÔ. Òò´Ë£¬ÏÖÔÚÎһعýÍ·À´£¬´´½¨ÁËÕâ¸ö¼«ÆäСÇɵÄÑùÀý£¬ÒÔչʾʹÓÃÄ£¿é¿ÉÒÔÓжà¼òµ¥.
һ·×ßÀ´£¬ÎÒÏ£ÍûËüÄܹ»³ÉΪһƪºÃµÄ¶ÔAngularµÄ½éÉÜ.
£¨´ó¶àÊý£©ÎÄÕÂÔÚ²ûÊöģʽʱµÄÎÊÌâ
´ó¶àÊýʱºòÈËÃǶ¼»á³¢ÊÔÈ¥ÔÚ¶ÁÕßÖªµÀģʽÊÇɶ¸ÅÄî֮ǰ¾Í¿ªÊ¼²ûÊöÒ»¸öģʽ£¬¶øÕâ»ù±¾ÉÏÎóµ¼ÁËÿһ¸öÈË. ÕâÀïҪŬÁ¦Ê¹µÃ±¾Îľ¡Á¿¼òµ¥£¬ÈÃÎÒÃÇÊ×ÏÈÀ´¿´Ò»¿´Õâ¸öÎÊÌâ°É¡£ÄĸöÎÊÌâÄØ£¿¾ÍÊÇÓйØÄ¬ÈÏ»áÔÚÈ«¾ÖÄÚ´æ¿Õ¼ä±»´´½¨µÄËùÓж«Î÷µÄJavascriptµÄÎÊÌâ.
ÏÂÃæ¾ÍÊÇÎÒËù˵µÄÒâ˼.
JavaScript ĬÈϵÄÈ«¾ÖÎÊÌâ
ÉèÏëÄãµÄHTMLÖÐÓÐÏÂÃæÕâÑùÒ»¶Î½Å±¾.
<script> var isDoingWork = false; </script>
|
·¶Î§?
ÄãÇå³þÕâ¸ö±äÁ¿µÄ·¶Î§Ã´?
Êǵģ¬ËüÊÇÈ«¾ÖµÄ¡£Õâ¸ö²¼¶ûֵʵ¼ÊÉϱ»Ìí¼Óµ½ÁËä¯ÀÀÆ÷µÄÈ«¾Ö´°¿Ú¶ÔÏóÖÐ.
°ÑËüÉèÖõ½ActionÖÐ
ÕâÀïÄã¿ÉÒÔ¿´µ½ËüÔÚActionÖÐÊÇÔõÑùµÄ.
1.ÏÂÔØ±¾ÎĵĴúÂëÑùÀý.
2.ÔÚÄãµÄä¯ÀÀÆ÷Öдò¿ª modulePattern.htm .
3.´ò¿ªä¯ÀÀÆ÷¿ª·¢¹¤¾ß -- F12(Chrome, IE) or Ctrl-Shift-I (Opera)
-- (ÄÇÑù¾Í¿ÉÒÔ¿´¼û¿ØÖÆÌ¨ÁË)
4.ÔÚä¯ÀÀÆ÷¹¤¾ß¿ØÖÆÌ¨Ï£¬ÊäÈë: isDoingWork£¬È»ºó»Ø³µ<ENTER>
5.Äã»á¿´µ½Êä³öµÄֵΪfalse.
6.ÏÖÔÚÊäÈë : isDoingWork = true£¬È»ºó»Ø³µ<ENTER>
7.Èç´ËÏÂÔØµÄÖµ¾ÍΪtrueÁË. ÄãÒѾ¸Ä±äÁËÕâ¸öÖµ.
8.Äã¿ÉÒÔ¿´µ½Õâ¸öÖµÒѾͨ¹ýÊäÈëdoingwindow.isDoingWork = trueÈ»ºó»Ø³µ<ENTER>£¬±»Ìí¼Óµ½ÁËÈ«¾Ö´°¿Ú¶ÔÏóÖ®ÖÐ.
Õâ¿ÉÄÜ»áÔì³ÉһЩÃû×Ö³åÍ»£¬Ò²»áµ¼ÖÂһЩÑÏÖØµÄbug. ÕâÒ²Ðí¶ÔÄã¶øÑÔÓеãè½ÈËÓÇÌìÁË£¬ÊDz»?
µ«ÊÇÇëÉèÏëÄãÊǾö¶¨ÒªÈ¥ÊµÏÖijһ¸öеÄJS¿â£¬Ëüÿ·ÖÿÃë¶¼¿ÉÒÔ±»´´½¨³öÀ´. ¼ÙÉèÄã·¢ÏÖÁËÕâ¸ö½Ð×ö Panacea.js
µÄºÜ°ôµÄ¿â£¬Ëü½«½â¾öÄãËùÓеÄÎÊÌâ.
Òò´ËÄãÏòÏÂÃæÕâÑùÔÚÄãµÄÒ³ÃæÖÐÒýÓÃÁËËü:
<script src="panacea.js"></script>
|
Èç´Ë¼òµ¥£¬Äã¾ÍÒѾ½â¾ö֮ǰÄãÓöµ½µÄËùÓÐÎÊÌâ. È»¶ø£¬ÒòΪËüÊÇÒ»¸öÅÓ´óµÄ¿â£¬¶øÄãÖ»ÏëÒª½â¾ö·½·¨£¬È´²»»ØÈ¥ÉîÍÚÕâ¸öÅӴ󣨼¸Ç§ÐдúÂ룩ԴÎļþÀïµÄÿһÐдúÂë.
¶øÉîÂñÔÚ Panacea.js ÀïÃæÄ³¸ö½ÇÂäµÄȷʵÏÂÃæÕâÑùµÄ´úÂë:
var isDoingWork = false; setInterval(function(){isDoingWork = !isDoingWork;}, 3000);
|
Õâ´úÂëÕæÊǿᣬÄãÖªµÀÂð?
ÿ¸ö3Ã룬Ëü¶¼»á½«Õâ¸ö²¼¶ûÖµÉèÖóÉÏà¶ÔµÄÖµ¡£°¡!
×Ô¼º¶¯ÊÖ¿´¿´
Èç¹ûÄãÏëÒª×Ô¼º¶¯ÊÖÑéÖ¤ÏÂÕâ¸ö¶«Î÷£¬Äã¿ÉÒÔ×öÏÂÃæÕ⼸²½:
1.ÏÂÔØ±¾ÎĵÄÑùÀý´úÂë.
2.ÔÚÄãµÄä¯ÀÀÆ÷Öдò¿ª modulePattern2.htm .
3.´ò¿ªä¯ÀÀÆ÷¿ª·¢¹¤¾ß -- F12(Chrome, IE) »òÕß Ctrl-Shift-I (Opera)
-- (ÕâÑùÄã¾Í¿ÉÒÔ¿´µ½¿ØÖÆÌ¨ÁË)
4.ÔÚä¯ÀÀÆ÷¿ª·¢¹¤¾ßµÄ¿ØÖÆÌ¨Ï£¬ÊäÈë : isDoingWork È»ºó»Ø³µ<ENTER>
5.½«µÚ4²½¶àÖØ¸´¼¸´Î£¬Ä㽫»á·¢ÏÖisDoingWorkµÄÖµ»áÿ¸ö´óÔ¼3ÃëÖӱ仯һ´Î.
ÄÇÕâÊDz»ÊǺܰôÄØ?
ÎҵĵÚÒ»¸ö¹Ûµã : Ä£¿éģʽÊǺÜÓÐÓõÄ
ÎÒÐèҪΪ´Ë×ö³ö½âÊÍ£¬ÎªÁËÒªÏòÄãչʾΪʲô JavaScript µÄÄ£¿éģʽÊǺÜÓÐÓõÄ.
ÎÒµÃÏëÄãչʾ JavaScript µÄÄ£¿éģʽ£¬ÄÇÑùÎҾͿÉÒÔ¸æËßÄãËüÊÇÈçºÎÔÚAngularJSÖб»Ê¹ÓûòʵÏÖµÄÁË.
Ä£¿éģʽ£º·â×°
Èç´Ë£¬Êµ¼Ê¾ÍÊÇ£¬Ä£¿éģʽ»ù±¾ÉϾÍÊÇ·â×°ÁË. ·â×°ÌýÆðÀ´ºÜÊìϤ£¬Èç¹ûÄãÓеãÃæÏò¶ÔÏó±à³Ì¾ÀúµÄ»° -- ¶øÎÒҲϣÍûÄãÄÜÓеãÕâ¸ö¾Ñé.
·â×°ÊÇÃæÏò¶ÔÏó±à³ÌµÄÈýÔÔòÖ®Ò»¡£·â×°µÄÁíÍâÒ»¸ö˵·¨¾ÍÊÇÊý¾ÝÒþ²Ø¡£ÔÚ¾µäµÄÃæÏò¶ÔÏó±à³ÌÖСª¡ªËü²»Í¬ÓÚJavaScriptËùÒÀÀµµÄÔÐÍ»¯OOP
-- Êý¾ÝÒþ²ØÊǹ¹½¨Ò»¸öÀàÄ£°åµÄÄÚÔÚ×é³É²¿·Ö.
ÀýÈçÔÚ C#ÖУ¬ Animal ÀàµÄ·â×° -- Òþ²ØÊý¾Ý -- ÌØ¶¨µÄÖµ±»¹ØÁªµ½Animal¶ÔÏó.
ÄÇÑù£¬Èç¹ûijÈ˾ö¶¨±ä¸üÄÇЩֵ£¬Ëû»òËû±ØÐëÃ÷È·µÄͨ¹ý³õʼ»¯Ò»¸öAnimal¶ÔÏó²¢ÉèÖÃÕâ¸ö¶ÔÏóµÄÖµÀ´´ïµ½Ä¿µÄ.
ÔÚJavaScriptÖУ¬ÎÒÃÇÔò¿ÉÒÔËæÒâµÄÔÚÈ«¾Ö´°¿Ú¶ÔÏóÖÐÉèÖÃÖµ.
public class Animal { // constructor allows user to set the commonName public animal(string name) { this.commonName = name; } // making commonName private hides (encapsulates) it in the class private string commonName; //explicitly exposing the value for reading only public string CommonName get { return this.commonName } }
|
ÔÚJavaScriptÖУ¬Ä£¿éÒѾ±»´´½¨ÓÃÀ´Ä£ÄâÕâÖÖ·â×°ÐÐΪÁË£¬Èç´ËÎÒÃǾͲ»»áÈ¥½«ÎÒÃǵıäÁ¿×éÖ¯µ½Ò»¸öÈ«¾ÖµÄÃüÃû¿Õ¼äÖУ¬²¢Ôì³ÉÁËÒþ²ØºÜÉîµÄÄÑÒÔ±»·¢ÏÖºÍÐÞ¸´µÄÎÊÌâ.
ÏÖÔÚÄãÖªµÀΪʲôÁË£¬ÈÃÎÒÃÇÀ´¿´¿´ÈçºÎ»áÊÇÕâÑùµÄ.
º¯Êý±»Á¢¼´µ÷Óõıí´ïʽ(IIFE)
¿´ÉÏÈ¥¾ÍºÃÏñÿ´ÎÎÒÃÇÏòÇ°ÍÆ½øÒ»²½£¬ÎÒÃǶ¼Òª×ßµãÅÔÃÅ×óµÀ. ÒòΪҪ»ñµÃÄÜÈÃÎÒÃÇ´´½¨Ä£¿éģʽµÄJavaScriptÓï·¨£¬ÎÒÃǾ͵ÃÈ¥Á˽âÒ»ÖÖ½Ð×öº¯Êý±»Á¢¼´µ÷Óõıí´ïʽÓï·¨£¬Ò²½Ð×öIIFE
( IIFE ·¢ÒôÊÇ "iffy").
×î»ù´¡µÄ IIFE ¿´ÆðÀ´ÏñÕâÑù:
(function(){ // lines // of // code }());
|
Èç¹ûÄã´ÓÀ´Ã»Óп´µ½¹ýÏñÕâÑùµÄ¶«Î÷£¬ÄÇÄã¾ÍÓеã˵²»¹ýÈ¥ÁË.
Á¢¼´±»µ÷ÓÃ
Ê×ÏÈ£¬Õâ¸öÃû³ÆµÄµÚÒ»²¿·Ö½Ð×öÁ¢¼´±»µ÷ÓõÄÔÒòÊÇ£¬Ò»°ã°üº¬Õâ¸öÌØÊ⺯ÊýµÄÔ´Îļþ±»¼ÓÔØºÃÁË£¬ÄÇô°üº¬ÔÚÕâ¸öº¯ÊýÖеĴúÂë¾Í»áÔËÐÐ.
¶ÔIIFEÓï·¨¸ü¼Ó×ÐϸµÄ¹Û²ì
Äã¿ÉÒÔ¿´µ½Õâ¸öÓï·¨µÄ×îÖÐÐÄÊÇÒ»¸öº¯Êý¡£¿´Ò»ÏÂÕâ¸ö´úÂë¿é£¬ÎÒÒѾ½«´úÂë·Ö¶Î²¢½«Ò»Ð©ÐбêÉÏÁ˺ţ¬Èç´ËÎÒÃǾͿÉÒÔ̽ÌÖËüÁË.
( // 1. function() //2. { // 3. // Ò»ÐÐÒ»ÐÐ // µÄ // ´úÂë }() // 4. ); // 5
|
Ê×ÏÈ£¬¿´¿´ÉÏÃæ½Å±¾µÄµÚ2ÐС£ÕâÒ»ÐÐͨ³£¿´À´¾ÍÊÇÒ»¸öÄäÃû£¨Ò²¾ÍÊÇûÓÐÃüÃû£©µÄº¯ÊýÉùÃ÷.
¶øºó£¬µÚ3Ò»Ö±µ½µÚ4ÔòÊÇÕâ¸öº¯ÊýµÄÖ÷Ìⲿ·Ö¡£×îºó£¬µÚ4ÐÐ×îºóÒÔÒ»¶ÔÀ¨»¡½áÊø£¬Õâ¶Ô À¨»¡»á¸æËßJavaScript½âÊÍÆ÷È¥µ÷ÓÃÕâ¸öº¯Êý¡£×îÖÕ,
ËùÓÐÕâЩ¶¼»á±»°üÔÚÒ»¸ö²»¹éÊôÈκβ¿·ÖµÄÀ¨»¡£¨µÚ1ºÍµÚ5ÐУ©ÖÐ, ¶øÕâ¶ÔÀ¨»¡»á¸æËß½âÊÍÆ÷Òªµ÷ÓÃÕâ¸öÍⲿµÄÄäÃûº¯Êý£¬Ëü°üº¬ÁËÎÒÃÇËù¶¨ÒåµÄº¯Êý.
IIFE ¿ÉÒÔ´øÉϲÎÊý
Õâ¶ÎÆæ¹ÖµÄÓï·¨»áÔÚ´øÉϲÎÊýÖ®ºó£¬¿´ÆðÀ´»á¸ü¼ÓµÄÆæ¹Ö. Ëü¿´ÆðÀ´»áÏñÊÇÏÂÃæÕâÑù
(function(thing1, thing2){ // lines // of // code }("in string", 382));
|
ÏÖÔÚ£¬Äã¿ÉÒÔ¿´µ½Õâ¸öº¯Êý¿ÉÒÔ´øÉÏÁ½¸ö»á±»ÄÚ²¿µÄº¯ÊýÒýÓõÄthing1, thing2²ÎÊý. ±»´«ÈëÖµ£¬ÔÚʾÀýÖÐÊÇ
"in string" ºÍ 382.
ÏÖÔÚÎÒÃÇÀí½âÁËIIFEÓï·¨£¬ÈÃÎÒÃÇÀ´´´½¨ÁíÍâÒ»¸ö´úÂëʾÀý£¬ÎÒÃǽ«ÔËÐÐÕâ¶Î´úÂëÀ´¿´¿´·â×°ÊÇÈçºÎÔË×÷µÄ.
(function(){ var isDoingWork = false; console.log("isDoingWork value : " + isDoingWork); }());
|
×Ô¼º¶¯ÊÖ¿´¿´
ΪÁË¿´¿´ÊÇÔõôÔËÐеģ¬Äã¿ÉÒÔ×öÏÂÃæÕ⼸²½:
1.ÏÂÔØ±¾ÎĵÄÔ´´úÂë.
2.ÔÚÄãµÄä¯ÀÀÆ÷Öдò¿ª modulePattern3.htm.
3.´ò¿ªä¯ÀÀÆ÷µÄ¿ª·¢¹¤¾ß -- F12(Chrome, IE) »òÕß Ctrl-Shift-I (Opera)
-- (ÕâÑùÄã¾Í¿ÉÒÔ¿´µ½¿ØÖÆÌ¨ÁË)
4.Äã¿ÉÒÔ¿´µ½ºÜÏñÏÂÃæÕâÑùͼƬÖÐËùչʾ³öÀ´µÄ¶«Î÷
µ±·½·¨±»µ÷ÓÃʱ -- Õâ»áÔÚ´úÂë±»JavaScript½âÊÍÆ÷¼ÓÔØÖ§»¤Á¢¼´·¢Éú
-- ¶øºóº¯Êý»á´´½¨ isDoingWork ±äÁ¿£¬²¢µ÷ÓÃconsole.log()À´ÔÚ¿ØÖÆÌ¨Êä³öÕâ¸ö±äÁ¿µÄÖµ.
ÏÖÔÚ£¬ÈÃÎÒÃÇʹÓÿª·¢¹¤¾ßÖеĿØÖÆÌ¨À´ÊÔÊÔÎÒÃÇ֮ǰËù³¢ÊÔ¹ýµÄ²½Öè:
1.ÊäÈë: isDoingWorkÈ»ºó»Ø³µ<ENTER>
µ±ÄãÕâÑù×öÁËÖ®ºó£¬Ä㽫»á¿´µ½ ä¯ÀÀÆ÷²»ÔÙÏàÐÅisDoingWorkÕâ¸öÖµ±»¶¨Òå¹ý¡£¼´Ê¹ÊÇÄã³¢ÊÔ´ÓÈ«¾Ö´°¿Ú¶ÔÏóÖлñÈ¡Õâ¸öÖµ,
ä¯ÀÀÆ÷Ò²²»ÈÏΪ isDoingWork Õâ¸öÖµÔڴ˶ÔÏóÖб»¶¨ÒåÁË. ÄãËù¿´µ½µÄ´íÎóÏûÏ¢¿´ÆðÀ´»áÏñ½ÓÏÂÀ´ÕâÕÅͼƬÖÐËùչʾµÄÕâÑù.
º¯ÊýÊÇÒ»¸ö¶ÔÏó£ºËü´´½¨ÁË·¶Î§
ÕâÊÇÒòΪÏÖÔÚÄãÒѾ°ÑisDoingWorkÕâ¸ö±äÁ¿´´½¨ÔÚÁËÒ»¸öº¯ÊýÀïÃæ -- Ò²¾ÍÊÇÎÒÃÇÃǵÄÄäÃû IIFE
ÖÐ -- ¶øÈç´ËÕâ¸ö±äÁ¿¾ÍÖ»ÄÜͨ¹ýÕâ¸öº¯Êý²ÅÄÜ·ÃÎʵ½. ÓÐȤµÄÊÇJavascriptÖеÄËùÓк¯Êý¶¼ÊǵÚÒ»Àà¶ÔÏó.
ÄǺܼòÃ÷µÄÒâζן¯ÊýÊÇÒ»¸ö¶ÔÏó£¬Ëü¿ÉÄÜͨ¹ýÒ»¸ö±äÁ¿±»·ÃÎʵ½. »òÕß˵£¬ÁíÍâÒ»ÖÖÃèÊöµÄ·½Ê½ÊÇÄã´æ´¢ÁËÖ¸Ïò
º¯ÊýµÄÒ»¸öÒýÓ㬲¢ÔÚÉÔºóµÄij¸öʱ¼ä»ñÈ¡Æä±äÁ¿.
ÔÚÎÒÃǵÚÒ»¸öʾÀýÖУ¬ÎÒÃǵÄÎÊÌâÊDz¢Ã»Óб£´æÒ»¸öÖ¸ÏòÎÒÃÇÄäÃûº¯ÊýµÄÒýÓã¬ËùÒÔÎÒÃÇÓÀÔ¶Ò²²»ÄÜÔÙ»ñÈ¡µ½isDoingWorkÕâ¸öÖµ¡£Õâ¾ÍÊÇÎÒÃÇÏÂÒ»¸öʾÀýÒª¸Ä½øµÄµØ·½.
º¯ÊýÊÇÒ»¸ö¶ÔÏó : ʹÓÃthis
ÒòΪÿһ¸öº¯Êý¶¼ÊÇÒ»¸ö¶ÔÏó£¬ËùÒÔÿ¸öº¯Êý¶¼»áÓÐÒ»¸öthis±äÁ¿£¬Õâ¸ö±äÁ¿Ïò¿ª·¢ÕßÌṩÁËÖ¸Ïòµ±Ç°¶ÔÏóµÄÒýÓÃ.
ΪÁËÌṩÔÚ´ÓÍⲿ´óÎÒÃǵĺ¯Êý¼°Æä·¶Î§µÄ·ÃÎÊ£¬ÎÒÃÇ¿ÉÒÔ·µ»ØÕâ¸öthis±äÁ¿ -- ¶øËü½«»áÌṩһ¸öÖ¸Ïòµ±Ç°¶ÔÏóµÄÒýÓÃ.
È»ºó£¬³ý·ÇÎÒÃǽ«Õâ¸ö˽ÓеÄisDoingWork±äÁ¿Ìí¼Óµ½º¯ÊýÒýÓã¨this)ÉÏ£¬ÎÒÃÇÒ²²»Äܹ»ÒýÓÃÕâ¸ö±äÁ¿¡£Îª´ËÎÒÃÇÒª¶Ô֮ǰµÄʾÀý×öÒ»ÏÂÇá΢µÄ¸Ä¶¯¡£Ëü¿´ÆðÀ´»áÏñÏÂÃæÕâÑù:
thing = (function(){ // 1. this.isDoingWork = false; // 2. console.log("isDoingWork value : " + isDoingWork); return this; // 3. }());
|
Äã¿ÉÒÔ¿´µ½µÚÒ»ÐÐÎÒÃǼÓÈëÁËÒ»¸öеÄÈ«¾Ö±äÁ¿thing£¬Ëü°üº¬ÁË´ÓÄäÃûº¯Êý·µ»ØµÄÖµ¡£´ÓʾÀý´úÂëµÄ¿ªÍ·Ìøµ½µÚÈýÐУ¬Äã¿ÉÒÔ¿´µ½ÎÒÃÇ·µ»ØÁËthis±äÁ¿¡£ÄǾÍÒâζ×ÅÎÒÃÇ·µ»ØÁËÒ»¸öÖ¸ÏòÄäÃûº¯ÊýµÄÒýÓÃ.
ÔÚµÚ¶þÐÐÎÒÃÇÒ²ÒѾ½«isDoingWork¼ÓÈëÁËthisÒýÓÃÖУ¬ÄÇÑùÎÒÃǾͿÉÒÔʹÓÃÓï·¨thing.isDoingWorkÀ´´ÓÍⲿÒýÓõ½Õâ¸öÖµÁË.
×Ô¼º¶¯ÊÖ¿´¿´
ΪÁË¿´¿´µÄÔËÐУ¬Äã¿ÉÒÔ×öÏÂÃæÕ⼸²½:
1.ÏÂÔØ±¾ÎĵÄʾÀý´úÂë.
2.ÔÚÄãµÄä¯ÀÀÆ÷Öдò¿ª modulePattern4.htm.
3.´ò¿ªä¯ÀÀÆ÷¿ª·¢¹¤¾ß -- F12(Chrome, IE) »òÕß Ctrl-Shift-I (Opera)
-- (ÄÇÑùÄã¾Í¿ÉÒÔ¿´µ½¿ØÖÆÌ¨ÁË)
4.Ä㽫»á¿´µ½isDoingWorkµÄÖµ»áÊä³öµ½¿ØÖÆÌ¨£¬¾ÍÏñ×ʼÄǸöʾÀýÖÐÄã¿´µ½µÄÄÇÑù.
5.²»¹ý£¬ÏÖÔÚÄãµÃÊäÈëthing.isDoingWork²ÅÄÜ»òÕßÕâ¸öÖµ.
Ä£¿éģʽ×ܽá
ÔÚ×îºóÕâ¸öʾÀýÖУ¬±äÁ¿Öµ±»³É¹¦µÄ·â×°ÁË£¬¶øÆäËûµÄJavaScript¿âÔò¿ÉÒÔÃ÷È·µÄÒýÓÃthing¶ÔÏóÀ´»ñÈ¡Õâ¸öÖµ.
ºÃÏñ²»´ó¿ÉÄÜ£¬¶øÕâ°ïÖúÁËÎÒÃDZ£³ÖÈ«¾ÖÃüÃû¿Õ¼äµÄ¸É¾»£¬²¢ÇÒÔÚ¿´Æð¿´À´ÊǸüºÃµÄ´úÂë×éÖ¯ÐÎʽ. ÕâҲʹµÃÎÒÃÇ´úÂëµÄά»¤¸üÈÝÒ×.
×îÖÕ£¬ÎÒÃÇÓÃÉÏÁË AngularJS
ÒòΪʹÓÃÄ£¿éģʽÊÇÒ»¸ö×î¼Ñʵ¼ù£¬AngularJSµÄ¿ª·¢Õ߾ͽ«Ò»¸öÄ£¿éϵͳ¹¹½¨µ½ÁË¿âÖÐ.
Plunker ´úÂë
Ê×ÏÈÄã¿ÉÒÔͨ¹ýµ½Õâ¸öPlunkerÉÏ (http://plnkr.co/edit/js8rbKpIuAuePzLF2DcP?p=preview
- ÔÚÒ»¸öеĴ°¿Ú»òTabÒ³´ò¿ª)»ñÈ¡Õû¸öAngularJSʾÀý.
¶øÎÒÃÇÔÚÕâÀïչʾ³ö´úÂ룬ÄÇÑùÎÒÃǾͿÉÒÔ¸ü·½±ãµÄ̸ÂÛËüÁË.
Ê×ÏÈ£¬ÈÃÎÒÃÇ¿´¿´Õâ¸ö HTML.
<!DOCTYPE html> <html ng-app="mainApp"> <head> <meta charset="utf-8" /> <title>Angular Module Example</title> <script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.20/angular.js" data-semver="1.2.20"></script> <script src="mainCtrl.js"></script> <script src="secondCtrl.js"></script> </head> <body> <div ng-controller="MainCtrl as mc"> <p>mc refers to MainCtrl which has been added to the angular app module</p> <p>Hello {{mc.name}}!</p> <ol><li ng-repeat="a in mc.allThings">{{a}}</li></ol> </div> <div ng-controller="SecondCtrl as sc"> <p> Hello {{sc.name}} </p> <ol><li ng-repeat="a in sc.allThings">{{a}}</li></ol> </div> </body> </html>
|
Angular Ö¸Áî : ng-app
Angular Ëù¶¨ÒåºÍʹÓõĶ«Î÷½Ð×öÖ¸Áî¡£ÕâЩָÁî»ù±¾ÉϾÍÊÇÓÉAngular¶¨ÒåÊôÐÔ£¬¶øAngularJS±àÒëÆ÷£¨AngularµÄJavaScript£©»á½«ËüÃÇת»»³ÉÆäËûµÄ¶«Î÷.
ÎÒÃÇÓ¦ÓÃÁËng-appÖ¸ÁΪÎÒÃǵÄAngularÓ¦Óö¨ÒåÁËÒ»¸öÃû³Æ£¬½Ð×ömainApp.
mainApp ¾ÍÊÇÎÒÃÇÉÔºó»á¿´µ½µÄÄ£¿éģʽµÄÆðµã.
±»ÒýÈëµÄ½Å±¾ : ÿ¸ö¶¼ÊÇÒ»¸öÄ£¿é
ÏÖÔÚ£¬Çë×¢ÒâÓÐÈý¸ö½Å±¾±»ÒýÈëµ½ÁËÕâ¸öHTMLÖÐ.
µÚÒ»¸öÊDZØÐëµÄAngularJS¿â.
¶øÆäËûÁ½¸öÔòÊÇ×÷Ϊģ¿é±»ÊµÏÖµÄAngular¿ØÖÆÆ÷.
ËüÃDZ»×÷Ϊģ¿éʵÏÖÒÔ±£³Ö´úÂë±Ë´Ë£¬»¹ÓдÓÕâ¸öÓ¦ÓÃÉÏ¿´£¬¶¼ÊǶÀÁ¢µÄ.
AngularJS : ´´½¨ score
ÔÚÍùÏ¿´£¬Ä㽫»á¿´µ½Á½¸öÒÔÈçÏ´úÂ뿪ͷµÄdiv:
<div ng-controller="MainCtrl as mc">
<div ng-controller="SecondCtrl as sc">
|
ÕâÊÇÔÚΪdivµÄÿһ¸ö¶¼ÉèÖÃÉÏng-controller. ÕâЩdivÖеÄÿһ¸ö¶¼ÓÐÆä¸÷×Եķ¶Î§. µÚÒ»¸ö¿ØÖÆÆ÷µÄÃû×Ö½Ð×ö
MainCtrl£¬µÚ¶þ¸ö½Ð×ö SecondCtrl.
AngularJS ±àÒëÆ÷»áÔÚÄãÌṩ£¨ÒýÈ룩µÄ´úÂëÖÐÓÃÕâÁ½¸öÃû³Æ²éÕÒ¶ÔÓ¦µÄº¯Êý.
Èç¹ûAngularJS±àÒëÆ÷ûÓÐÕÒ¸öÕâÁ½¸öÃû³Æ¶ÔÓ¦µÄº¯Êý£¬Ëü¾Í»áÅ׳öÒ»¸ö´íÎó.
mainCtrl.js : µÚÒ»¸ö¿ØÖÆÆ÷
ÈÃÎÒÃÇÀ´¿´¿´mainCtrl.jsÎļþÀïÃæÓÐЩɶ¶«Î÷.
Äã¿ÉÒÔÔÚPlunkerÒ³ÃæµÄ×ó²àµã»÷ËüÔÚPlunkerÖн«Æä´ò¿ª.
µ±Äã´ò¿ªÁËËü£¬Ä㽫»á¿´µ½Ò»Ð©¿´ÉÏÈ¥ºÜÊìϤµÄ´úÂë¡£ºÃ°É£¬ÄãÖÁÉٻῴ³öÀ´ËüÃǶ¼ÊDZ»°üÔÚÒ»¸öIIFEÖеÄ.
(function() { var app = angular.module('mainApp', []); app.controller('MainCtrl', function() { console.log("in MainCtrl..."); // vt = virtual this - just shorthand vt = this; vt.name = 'MainCtrl'; vt.allThings = ["first", "second", "third"]; }); })();
|
ÄÇÊÇÒòΪÎÒÃÇÐèÒªÕâЩ´úÂëÔÚÎļþmainCtrl.js±»¼ÓÔØÊ±¾ÍÔËÐÐ.
ÏÖÔÚ£¬Çë×¢ÒâÔÚÕâ¸öIIFEÖеĵÚÒ»ÐдúÂë.
var app = angular.module('mainApp', []);
|
ÕâÐдúÂëÊÇAngular½«Ò»¸öÄ£¿éÌí¼Óµ½ÆäÃüÃû¿Õ¼äµÄ·½Ê½. ÔÚÕâÀÎÒÃÇÌí¼ÓÁËÒ»¸ö½«ÓÃÀ´Õ¹Ê¾ÎÒÃÇÓ¦ÓóÌÐòµÄÄ£¿é.
ÕâÊÇÓ¦ÓóÌÐòµÄÄ£¿é£¬¶øÎÒÃÇÒѾ½«ÆäÃüÃûΪ itmainApp, Ëü¸úHTMLÒ³ÃæÉÏng-appËùÖ¸¶¨µÄÖµÊÇÒ»ÑùµÄ.
ÎÒÃÇÒ²´´½¨ÁËÒ»¸ö½Ð×öappµÄ£¨Ö»ÔÚIIFE±¾µØ¿É¼ûµÄ£©±¾µØ±äÁ¿£¬ÒÔ±ãÎÒÃǽ«¿ÉÒÔÔÚÕâ¸öº¯ÊýÄÚ²¿ÓÃÀ´ÔÙ´ÎÌí¼ÓÒ»¸ö¿ØÖÆÆ÷.
Ææ¹ÖµÄ Angular Óï·¨
ÇëÄãÒ²ÒªÔÙ×Ðϸ¿´¿´µÚÒ»ÐС£Äã»á×¢Òâµ½ÎÒÃÇÊÇÊ״δ´½¨mainAppÄ£¿é£¬¶øÈç¹ûÊÇÊ״Σ¬ÔòÎÒÃDZØÐëÌṩÒÔ×Ö·û´®Êý×éµÄÐÎʽÌṩÆä¿ÉÄÜÐèÒªµÄÈκÎÒÀÀµ(£¬±íʾ³öÒÀÀµ¿âµÄÃû³Æ).
²»¹ý£¬ÔÚÕâÀï¶ÔÓÚÕâ¸ö¼òµ¥µÄʾÀý¶øÑÔ£¬ÎÒÃDz»ÐèÒªÈκεÄÒÀÀµ¡£µ«AngularÈÔÈ»ÐèÒªÎÒÃÇ´«ÈëÒ»¸ö¿ÕµÄÊý×飬ÒÔ±ãËüÖªÏþÎÒÃÇÕýÔÚ´´½¨ÐµÄÄ£¿é£¬¶ø²»ÊÇÈ¥ÊÔͼ¼ÓÔØÒ»¸öÒѾ±»´´½¨ºÃÁ˵ÄÄ£¿é.
Ìáʾ: Ä㽫»á¿´µ½ÎÒÃÇ»áÔÚsecondCtrl.jsÀï¼ÓÔØmainAppÄ£¿é£¬¶øÉÏÃæËùÌáµÄÊý×齫»áÓиü¶àµÄ×÷ÓÃ.
ÎÒÃÇÒ»°ÑmainApp´´½¨ºÃ£¬¾ÍÐèÒªÏòÆäÌí¼ÓÎÒÃǵĿØÖÆÆ÷. ÕâЩ¾ÍÊÇAngularÔ¤ÆÚÎÒÃÇÔÚHTML£¨µÄdivÖУ©¼ÓÈëµÄ¿ØÖÆÆ÷.
½«¿ØÖÆÆ÷Ìí¼Óµ½AppÄ£¿é
Ìí¼Ó¿ØÖÆÆ÷µÄ´úÂë¿´ÆðÀ´ÏñÏÂÃæÕâÑù:
app.controller('MainCtrl', function() { console.log("in MainCtrl..."); // vt = virtual this - just shorthand vt = this; vt.name = 'MainCtrl'; vt.allThings = ["first", "second", "third"]; });
|
ΪÁËÌí¼ÓÎÒÃǵĿØÖÆÆ÷º¯Êý£¬ÎÒÃÇÏòapp.controller()º¯ÊýÌṩÁËÒ»¸ö¿ØÖÆÆ÷Ãû³ÆºÍÒ»¸öº¯Êý.
ÔÚ´Ë´¦ÎÒÃÇÌṩÁËÒ»¸öÄäÃûº¯Êý.
ËùÒÔ£¬ÎÒÃǵĿØÖÆÆ÷Ö÷Ìå´úÂë¾ÍÊÇÏÂÃæÕ⼸ÐÐÁË:
console.log("in MainCtrl..."); // vt = virtual this - just shorthand vt = this; vt.name = 'MainCtrl'; vt.allThings = ["first", "second", "third"];
|
ÕâÀµ±ÎÒÃǵĿØÖÆÆ÷ÔËÐÐʱ£¬»áÏò¿ØÖÆÌ¨Êä³öÒ»ÐÐ. È»ºó£¬ÎÒÃǽ«this±äÁ¿ÖØÃüÃûΪvt£¨·½±ãÆð¼û£¬¾Í½ÐËûÐéÄâµÄthis)
£¬¶øºóÎÒÌìΪÆäÌí¼ÓÁËÒ»¸önameÊôÐÔºÍÒ»¸ö½Ð×öallThings µÄ×Ö·û´®Êý×é.
¿ØÖÆÆ÷ºÍ·â×°
ÄǾÍÊǵ±¿ØÖÆÆ÷±»Angularµ÷ÓÃʱ»áÔËÐеĴúÂë. ÄǸö¿ØÖÆÆ÷»áÔÚÎļþ±»¼ÓÔØÊ±ÔËÐÐÆðÀ´£¬Ò²¾ÍÊÇÒ»¿ªÊ¼HTML±»¼ÓÔØµÄʱºò.
ÕâÒâζ×Å¿ØÖÆÆ÷»á±»¼ÓÔØµ½appÄ£¿éÖУ¬¶øÕâЩÊôÐԻᱻÌí¼Óµ½¿ØÖÆÆ÷¶ÔÏ󣨺¯Êý£©ÖС£ÒòΪÎÒÃÇÏëthis±äÁ¿Ìí¼ÓÁËÊôÐÔ£¬ÎÒÃǾͿÉÒÔÔÚÉÔºó»ñÈ¡ÕâЩÊôÐÔ£¬µ«ËüÃÇÊDZ»·â×°ÁËÆðÀ´µÄ£¬Òò´ËËüÃDz»¿ÉÒÔ±»Ã¿¸öÈËËæÒâµÄ¸ü¸Ä.
ÏÖÔÚ£¬ÈÃÎÒÃÇÌøµ½HTMLÖпØÖÆÆ÷±»ÒýÓúÍʹÓõĵط½.
µÚÒ»¸öDiv
ÕâÊÇÎÒÃǵÄMainCtrl¿ØÖÆÆ÷±»ÒýÓúÍʹÓõĵÚÒ»¸öDiv¡£Ëü¿´ÆðÀ´¾ÍÏñÏÂÃæÕâÑù:
<div ng-controller="MainCtrl as mc"> <p>mc refers to MainCtrl which has been added to the angular app module</p> <p>Hello {{mc.name}}!</p> <ol><li ng-repeat="a in mc.allThings">{{a}}</li></ol> </div>
|
Õâ¸ödivÊä³öÎÒÃǵÄwebÒ³ÃæµÄÈçϲ¿·Ö£¬¿´ÆðÀ´¾ÍÊǽÓÏÂÀ´ÕâÕÅͼƬÉÏËùչʾµÄÄÇÑù.
Êä³ö±»Ê¹ÓÃAngularÖ¸ÁîÀ´´´½¨
²»¹ý£¬ËüʹÓÃÁËÒ»ÖÖÌØÊâµÄ·½Ê½´´½¨ÄǸöÊä³ö£¬ËüʹÓÃÁËÁ½ÖÖAngularÖ¸Áî:
1.{{mc.name}}
2.ng-repeat
µÚÒ»¸öÖ¸Áî±»¹ØÁªµ½ÁËDivÄÇÒ»ÐÐÉÏÃæMainCtrlµÄÉùÃ÷ºÍÒýÓÃ. ÎÒÃǸæËßAngular£¬ËµÎÒÃÇÏëÒÔmcÕâ¸öÃû³ÆÒýÓÃÎÒÃǵÄMainCtrlº¯Êý£¨¶ÔÏ󣩡£ÄǾÍÊÇAngularÌṩµÄÒ»¸öºÜ°ôµÄËõд¹¦ÄÜ.
ÏÖÔÚ£¬ÒòΪÎÒÃǽ«Ò»¸öÊôÐԷŵ½ÁËMainCtrlµÄthis¶ÔÏóÉÏ£¬ÎÒÃÇÏÖÔھͿÉÒÔͨ¹ýmcºÍÊôÐÔµÄÃû³ÆÀ´ÒýÓÃÄÇЩ¶«Î÷ÁË¡£ÎÒÃǽ«ÄÇЩ¶«Î÷°üº¬ÌØÊâµÄË«´óÀ¨ºÅ{{
}}ÀïÃæ£¬Èç´ËAngular±àÒëÆ÷¾Í¶®µÃÄÇÊÇ¿ÉÒÔÔËÐеĴúÂ룬Äã¾Í»áÇÆ¼ûAngular½«Æäת»»³ÉÁËHTML:
<p>Hello {{mc.name}}!</p>
|
±à³ÌÁËÏÂÃæÕâÒ»:
<li ng-repeat="a in mc.allThings">{{a}}</li>
|
Ö®ºó£¬ÎÒÃÇÉèÖÃÁËÒ»¸öƯÁÁµÄÎÞÐèÁÐ±í£¬²¢Ê¹ÓÃÁËng-repeatÖ¸ÁîÀ´µü´úÊä³öÊý×éÖеÄÿһÐÐ.
È»ºóAngularµøµ¹ÁËÕû¸öallThingsÊý×飬²¢½«Æä×°»»³ÉÁËÏÂÃæµÄHTML
1.first 2. second 3. third |
±ä³ÉÁËÈçϵÄÊä³ö
(function() { var app = angular.module('mainApp'); app.controller('SecondCtrl', function() { console.log("in SecondCtrl..."); // vt = virtual this - just shorthand vt = this; vt.name = 'SecondCtrl'; vt.allThings = ["bacon", "lettuce", "tomato"]; }); })();
|
¾ÍÄÇô¼òµ¥¡£Õâ¾ÍÊÇÄ£¿é»¯µÄËùÓж«Î÷£¬ÎÒÃǵÄÖµÔÙÒ²²»»á±»ÈκÎÈ˶¯ÊÖ¶¯½ÅÁË.
SecondCtrl : ¼¸ºõ¾ÍÊÇͬÑùµÄ¶«Î÷
ÕâÀïÓÐSecondCtrlµÄ´úÂë. ´úÂë»ú»á¾ÍÊÇÒ»ÑùµÄ£¬³ýÁËÎÒÃÇ»ñÈ¡ÎÒÂúÔÀ´µÄappÄ£¿é´¦Óе㲻һÑù¡ª¡ª²»ÊǵÚÒ»´Î´´½¨ËüÁË.
(function() { var app = angular.module('mainApp'); app.controller('SecondCtrl', function() { console.log("in SecondCtrl..."); // vt = virtual this - just shorthand vt = this; vt.name = 'SecondCtrl'; vt.allThings = ["bacon", "lettuce", "tomato"]; }); })();
|
×Ðϸ¿´¿´ÏÂÃæÕâÒ»ÐÐ:
var app = angular.module('mainApp');
|
ΨһµÄ²»Í¬¾ÍÊÇÎÒÃÇûÓÐÌṩÒýÓÃÊý×é.
ÄÇÊÇÒòΪmainAppÒѾÊÇ´æÔÚÁ˵쬶øÎÒÃÇÖ»ÊÇÏëÏòÆäÌí¼ÓÁíÍâÒ»¸öÐÂÄ£¿é (SecondCtrl) .
×ܽ᣺×î¼Ñʵ¼ù
ËùÓÐÆäËüµÄ½Å±¾ÖеĴúÂ룬ÒÔ¼°HTML»ù±¾ÉÏÊÇÒ»ÑùµÄ,¶ø´Ë´¦×îÖØÒªµÄÊÇËùÓеĴúÂë¶¼±»Ä£¿é»¯ÁË£¬Êý¾ÝÒ²±»·â×°ÁËÆðÀ´£¬ÒÔ±ã¸üºÃµÄ×éÖ¯ÎÒÃǵĴúÂë.
ÕâÊÇGoogleÈí¼þ¿ª·¢Õß×ñѵÄÒ»¸ö×î¼Ñʵ¼ù£¬Ò²ÊÇÎÒÃÇÓ¦¸Ã×ñѵġ£ÇëѧϰËû£¬ÔËÓÃËü£¬²¢ÓëËüͬÔÚ°É£¨°¢ÃÅ£©.
|