Ö¸ÁDirectives£©ÊÇËùÓÐAngularJSÓ¦ÓÃ×îÖØÒªµÄ²¿·Ö¡£¾¡¹ÜAngularJSÒѾÌṩÁ˷dz£·á¸»µÄÖ¸Áµ«»¹ÊǾ³£ÐèÒª´´½¨Ó¦ÓÃÌØ¶¨µÄÖ¸Áî¡£ÕâÆª½Ì³Ì»áΪÄã½²ÊöÈçºÎ×Ô¶¨ÒåÖ¸ÁÒÔ¼°½éÉÜÈçºÎÔÚʵ¼ÊÏîÄ¿ÖÐʹÓá£ÔÚÕâÆªÎÄÕµÄ×îºó£¨µÚ¶þ²¿·Ö£©£¬ÎÒ»áÖ¸µ¼ÄãÈçºÎʹÓÃAngularÖ¸ÁîÀ´´´½¨Ò»¸ö¼òµ¥µÄ¼Çʱ¾Ó¦Óá£
¸ÅÊö
Ò»¸öÖ¸ÁîÓÃÀ´ÒýÈëеÄHTMLÓï·¨¡£Ö¸ÁîÊÇDOMÔªËØÉϵıê¼Ç£¬Ê¹ÔªËØÓµÓÐÌØ¶¨µÄÐÐΪ¡£¾ÙÀýÀ´Ëµ£¬¾²Ì¬µÄHTML²»ÖªµÀÈçºÎÀ´´´½¨ºÍÕ¹ÏÖÒ»¸öÈÕÆÚÑ¡ÔñÆ÷¿Ø¼þ¡£ÈÃHTMLÄÜʶ±ðÕâ¸öÓï·¨£¬ÎÒÃÇÐèҪʹÓÃÖ¸Áî¡£Ö¸Áîͨ¹ýijÖÖ·½·¨À´´´½¨Ò»¸öÄܹ»Ö§³ÖÈÕÆÚÑ¡ÔñµÄÔªËØ¡£ÎÒÃÇ»áÑÐò½¥½øµØ½éÉÜÕâÊÇÈçºÎʵÏֵġ£
Èç¹ûÄãд¹ýAngularJSµÄÓ¦Óã¬ÄÇôÄãÒ»¶¨ÒѾʹÓùýÖ¸Á²»¹ÜÄãÓÐûÓÐÒâʶµ½¡£Äã¿Ï¶¨ÒѾÓùý¼òµ¥µÄÖ¸Á±ÈÈç
ng-mode, ng-repeat, ng-showµÈ¡£ÕâЩָÁî¶¼¸³ÓèDOMÔªËØÌØ¶¨µÄÐÐΪ¡£ÀýÈ磬ng-repeat
ÖØ¸´Ìض¨µÄÔªËØ£¬ng-show ÓÐÌõ¼þµØÏÔʾһ¸öÔªËØ¡£Èç¹ûÄãÏëÈÃÒ»¸öÔªËØÖ§³ÖÍÏ×§£¬ÄãÒ²ÐèÒª´´½¨Ò»¸öÖ¸ÁîÀ´ÊµÏÖËü¡£Ö¸Áî±³ºó»ù±¾µÄÏë·¨ºÜ¼òµ¥¡£Ëüͨ¹ý¶ÔÔªËØ°ó¶¨Ê¼þ¼àÌý»òÕ߸ıäDOM¶øÊ¹HTMLÓµÓÐÕæÊµµÄ½»»¥ÐÔ¡£
jQueryÊÓ½Ç
ÏëÏóÒ»ÏÂʹÓÃjQueryÈçºÎ´´½¨Ò»¸öÈÕÆÚÑ¡ÔñÆ÷¡£Ê×ÏÈ£¬ÎÒÃÇÔÚHTMLÖÐÌí¼ÓÒ»¸öÆÕͨµÄÊäÈë¿ò£¬È»ºóͨ¹ýjQueryµ÷ÓÃ
$(element).dataPicker() À´½«Ëüת±ä³ÉÒ»¸öÈÕÆÚÑ¡ÔñÆ÷¡£µ«ÊÇ£¬×ÐϸÏëһϡ£µ±Ò»¸öÉè¼ÆÈËÔ±¹ýÀ´¼ì²éHTML±ê¼ÇµÄʱºò£¬Ëû/ËýÄÜ·ñÁ¢¿Ì²Âµ½Õâ¸ö×Ö¶Îʵ¼ÊÉϱíʾµÄÄÚÈÝ£¿ÕâÖ»ÊÇÒ»¸ö¼òµ¥µÄÊäÈë¿ò£¬»òÕßÒ»¸öÈÕÆÚÑ¡ÔñÆ÷£¿ÄãÐèÒª²é¿´jQuery´úÂëÀ´È·¶¨ÕâЩ¡£¶øAngularµÄ·½·¨ÊÇʹÓÃÒ»¸öÖ¸ÁîÀ´À©Õ¹HTML¡£ËùÒÔ£¬Ò»¸öÈÕÆÚÑ¡ÔñÆ÷µÄÖ¸Áî¿ÉÒÔÊÇÏÂÃæµÄÐÎʽ£º
»òÕßÊÇÕâÑù£º
ÕâÖÖ´´½¨UI×齨µÄ·½Ê½¸ü¼ÓÖ±½ÓºÍÇåÎú¡£Äã¿ÉÒÔÇáÒ×µØÍ¨¹ý²é¿´ÔªËؾÍÃ÷°×Õâµ½µ×ÊÇʲô¡£
´´½¨×Ô¶¨ÒåÖ¸Á
Ò»¸öAngularÖ¸Áî¿ÉÒÔÓÐÒÔϵÄËÄÖÖ±íÏÖÐÎʽ£º 1. Ò»¸öеÄHTMLÔªËØ£¨<data-picker></data-picker>£©
2. ÔªËØµÄÊôÐÔ£¨<input type=¡±text¡± data-picker/>£© 3.
CSS class£¨<input type=¡±text¡± class=¡±data-picker¡±/>£©
4. ×¢ÊÍ£¨<!¨Cdirective:data-picker ¨C>£© µ±È»£¬ÎÒÃÇ¿ÉÒÔ¿ØÖÆÎÒÃǵÄÖ¸ÁîÔÚHTMLÖеıíÏÖÐÎʽ¡£ÏÂÃæÎÒÃÇÀ´¿´Ò»ÏÂAngularJSÖеÄÒ»¸öµäÐ͵ÄÖ¸ÁîµÄд·¨¡£Ö¸Áî×¢²áµÄ·½Ê½Óë
controller Ò»Ñù£¬µ«ÊÇËü·µ»ØµÄÊÇÒ»¸öÓµÓÐÖ¸ÁîÅäÖÃÊôÐԵļòµ¥¶ÔÏó(Ö¸ÁÒå¶ÔÏó) ¡£ÏÂÃæµÄ´úÂëÊÇÒ»¸ö¼òµ¥µÄ
Hello World Ö¸Áî¡£
var app = angular.module('myapp', []); app.directive('helloWorld', function() { return { restrict: 'AE', replace: 'true', template: '<h3>Hello World!!</h3>' }; }); |
ÔÚÉÏÃæµÄ´úÂëÖУ¬app.directive()·½·¨ÔÚÄ£¿éÖÐ×¢²áÁËÒ»¸öеÄÖ¸Áî¡£Õâ¸ö·½·¨µÄµÚÒ»¸ö²ÎÊýÊÇÕâ¸öÖ¸ÁîµÄÃû×Ö¡£µÚ¶þ¸ö²ÎÊýÊÇÒ»¸ö·µ»ØÖ¸ÁÒå¶ÔÏóµÄº¯Êý¡£Èç¹ûÄãµÄÖ¸ÁîÒÀÀµÓÚÆäËûµÄ¶ÔÏó»òÕß·þÎñ£¬±ÈÈç
$rootScope, $http, »òÕß$compile£¬ËûÃÇ¿ÉÒÔÔÚÕâ¸öʱ¼ä±»×¢Èë¡£Õâ¸öÖ¸ÁîÔÚHTMLÖÐÒÔÒ»¸öÔªËØÊ¹Óã¬ÈçÏ£º
<hello-world/> //OR <hello:world/> |
»òÕߣ¬ÒÔÒ»¸öÊôÐԵķ½Ê½Ê¹Óãº
<div hello-world></div> //OR <div hello:world/> |
Èç¹ûÄãÏëÒª·ûºÏHTML5µÄ¹æ·¶£¬Äã¿ÉÒÔÔÚÔªËØÇ°ÃæÌí¼Ó x- »òÕß data-µÄǰ׺¡£ËùÒÔÏÂÃæµÄ±ê¼ÇÒ²»áÆ¥Åä
helloWorld Ö¸Á
<div data-hello-world></div> //OR <div x-hello-world></div> |
×¢Ò⣺ ÔÚÆ¥ÅäÖ¸ÁîµÄʱºò£¬Angular»áÔÚÔªËØ»òÕßÊôÐÔµÄÃû×ÖÖÐÌÞ³ý x- »òÕß data- ǰ׺¡£ È»ºó½«
¨C »òÕß : Á¬½ÓµÄ×Ö·û´®×ª»»³ÉÍÕ·å(camelCase)±íÏÖÐÎʽ£¬È»ºóÔÙÓë×¢²á¹ýµÄÖ¸Áî½øÐÐÆ¥Åä¡£ÕâÊÇΪʲô£¬ÎÒÃÇÔÚHTMLÖÐÒÔ
hello-world µÄ·½Ê½Ê¹Óà helloWorld Ö¸Áî¡£Æäʵ£¬Õâ¸úHTML¶Ô±êÇ©ºÍÊôÐÔ²»Çø·Ö´óСдÓйء£
¾¡¹ÜÉÏÃæµÄÖ¸Áî½ö½öʵÏÖÁ˾²Ì¬ÎÄ×ÖµÄÏÔʾ£¬µ«ÊÇÕâÀﻹÊÇÓÐһЩÓÐȤµÄµãÖµµÃÎÒÃÇÈ¥ÍÚ¾ò¡£ÎÒÃÇÔÚÖ¸ÁÒå¹ý³ÌÖÐʹÓÃÁËÈý¸öÊôÐÔÀ´ÅäÖÃÖ¸Áî¡£ÎÒÃÇÀ´Ò»Ò»½éÉÜËûÃǵÄ×÷Óá£
restrict ¨C Õâ¸öÊôÐÔÓÃÀ´Ö¸¶¨Ö¸ÁîÔÚHTMLÖÐÈçºÎʹÓ㨻¹¼ÇµÃ֮ǰ˵µÄ£¬Ö¸ÁîµÄËÄÖÖ±íʾ·½Ê½Â𣩡£ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁË
¡®AE¡¯¡£ËùÒÔÕâ¸öÖ¸Áî¿ÉÒÔ±»µ±×÷еÄHTMLÔªËØ»òÕßÊôÐÔÀ´Ê¹Óá£Èç¹ûÒªÔÊÐíÖ¸Áî±»µ±×÷classÀ´Ê¹Óã¬ÎÒÃǽ«
restrict ÉèÖÃ³É ¡®AEC¡¯¡£
template ¨C Õâ¸öÊôÐԹ涨ÁËÖ¸Áî±»Angular±àÒëºÍÁ´½Ó£¨link£©ºóÉú³ÉµÄHTML±ê¼Ç¡£Õâ¸öÊôÐÔÖµ²»Ò»¶¨ÒªÊǼòµ¥µÄ×Ö·û´®¡£template
¿ÉÒԷdz£¸´ÔÓ£¬¶øÇÒ¾³£°üº¬ÆäËûµÄÖ¸ÁÒÔ¼°±í´ïʽ({{ }})µÈ¡£¸ü¶àµÄÇé¿öÏÂÄã¿ÉÄÜ»á¼ûµ½ templateUrl£¬
¶ø²»ÊÇ template¡£ËùÒÔ£¬ÀíÏëÇé¿öÏ£¬ÄãÓ¦¸Ã½«Ä£°å·Åµ½Ò»¸öÌØ¶¨µÄHTMLÎļþÖУ¬È»ºó½« templateUrl
ÊôÐÔÖ¸ÏòËü¡£
replace ¨C Õâ¸öÊôÐÔÖ¸Ã÷Éú³ÉµÄHTMLÄÚÈÝÊÇ·ñ»áÌæ»»µô¶¨Òå´ËÖ¸ÁîµÄHTMLÔªËØ¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬ÎÒÃÇÓÃ
<hello-world></hello-world>µÄ·½Ê½Ê¹ÓÃÎÒÃǵÄÖ¸Á²¢ÇÒ½«
replace ÉèÖÃ³É true¡£ËùÒÔ£¬ÔÚÖ¸Áî±»±àÒëÖ®ºó£¬Éú³ÉµÄÄ£°åÄÚÈÝÌæ»»µôÁË <hello-world></hello-world>¡£×îÖÕµÄÊä³öÊÇ
<h3>Hello World!!</h3>¡£Èç¹ûÄ㽫 replace ÉèÖóÉ
false£¬Ò²¾ÍÊÇĬÈÏÖµ£¬ÄÇôÉú³ÉµÄÄ£°å»á±»²åÈëµ½¶¨ÒåÖ¸ÁîµÄÔªËØÖС£
´ò¿ªÕâ¸ö plunker£¬ÔÚ¡±Hello World!!¡±ÓÒ¼ü¼ì²éÔªËØÄÚÈÝ£¬À´¸üÐÎÏóµØÃ÷°×ÕâЩ¡£ Linkº¯ÊýºÍScope
Ö¸ÁîÉú³É³öµÄÄ£°åÆäʵûÓÐÌ«¶àÒâÒ壬³ý·ÇËüÔÚÌØ¶¨µÄscopeϱàÒ롣ĬÈÏÇé¿öÏ£¬Ö¸Áî²¢²»»á´´½¨ÐµÄ×Óscope¡£¸ü¶àµÄ£¬ËüʹÓø¸scope¡£Ò²¾ÍÊÇ˵£¬Èç¹ûÖ¸Áî´æÔÚÓÚÒ»¸öcontrollerÏ£¬Ëü¾Í»áʹÓÃÕâ¸öcontrollerµÄscope¡£
ÈçºÎÔËÓÃscope£¬ÎÒÃÇÒªÓõ½Ò»¸ö½Ð×ö link µÄº¯Êý¡£ËüÓÉÖ¸ÁÒå¶ÔÏóÖеÄlinkÊôÐÔÅäÖá£ÈÃÎÒÃÇÀ´¸Ä±äÒ»ÏÂÎÒÃǵÄ
helloWorld Ö¸Áµ±Óû§ÔÚÒ»¸öÊäÈë¿òÖÐÊäÈëÒ»ÖÖÑÕÉ«µÄÃû³ÆÊ±£¬Hello World ÎÄ×ֵı³¾°É«×Ô¶¯·¢Éú±ä»¯¡£Í¬Ê±£¬µ±Óû§ÔÚ
Hello World ÎÄ×ÖÉϵã»÷ʱ£¬±³¾°É«±ä»Ø°×É«¡£ ÏàÓ¦µÄHTML±ê¼ÇÈçÏ£º
<body ng-controller="MainCtrl"> <input type="text" ng-model="color" placeholder="Enter a color" /> <hello-world/> </body> |
Ð޸ĺóµÄ helloWorld Ö¸ÁîÈçÏ£º
app.directive('helloWorld', function() { return { restrict: 'AE', replace: true, template: '<p style="background-color:{{color}}">Hello World', link: function(scope, elem, attrs) { elem.bind('click', function() { elem.css('background-color', 'white'); scope.$apply(function() { scope.color = "white"; }); }); elem.bind('mouseover', function() { elem.css('cursor', 'pointer'); }); } }; }); |
ÎÒÃÇ×¢Òâµ½Ö¸ÁÒåÖÐµÄ link º¯Êý¡£ ËüÓÐÈý¸ö²ÎÊý£º
scope ¨C Ö¸ÁîµÄscope¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬Ö¸ÁîµÄscope¾ÍÊǸ¸controllerµÄscope¡£
elem ¨C Ö¸ÁîµÄjQLite(jQueryµÄ×Ó¼¯)°ü×°DOMÔªËØ¡£Èç¹ûÄãÔÚÒýÈëAngularJS֮ǰÒýÈëÁËjQuery£¬ÄÇôÕâ¸öÔªËØ¾ÍÊÇjQueryÔªËØ£¬¶ø²»ÊÇjQLiteÔªËØ¡£ÓÉÓÚÕâ¸öÔªËØÒѾ±»jQuery/jQLite°ü×°ÁË£¬ËùÒÔÎÒÃǾÍÔÚ½øÐÐDOM²Ù×÷µÄʱºò¾Í²»ÐèÒªÔÙʹÓÃ
$()À´½øÐаü×°¡£
attr ¨C Ò»¸ö°üº¬ÁËÖ¸ÁîËùÔÚÔªËØµÄÊôÐԵıê×¼»¯µÄ²ÎÊý¶ÔÏó¡£¾Ù¸öÀý×Ó£¬Äã¸øÒ»¸öHTMLÔªËØÌí¼ÓÁËһЩÊôÐÔ£º£¬ÄÇô¿ÉÒÔÔÚ
link º¯ÊýÖÐͨ¹ý attrs.someAttribute À´Ê¹ÓÃËü¡£
linkº¯ÊýÖ÷ÒªÓÃÀ´ÎªDOMÔªËØÌí¼Óʼþ¼àÌý¡¢¼àÊÓÄ£ÐÍÊôÐԱ仯¡¢ÒÔ¼°¸üÐÂDOM¡£ÔÚÉÏÃæµÄÖ¸Áî´úÂëÆ¬¶ÎÖУ¬ÎÒÃÇÌí¼ÓÁËÁ½¸öʼþ£¬
click£¬ºÍ mouseover¡£click ´¦Àíº¯ÊýÓÃÀ´ÖØÖà <p> µÄ±³¾°É«£¬¶ø mouseover
´¦Àíº¯Êý¸Ä±äÊó±êΪ pointer¡£ÔÚÄ£°åÖÐÓÐÒ»¸ö±í´ïʽ {{color}}£¬µ±¸¸scopeÖÐµÄ color
·¢Éú±ä»¯Ê±£¬ËüÓÃÀ´¸Ä±ä Hello World ÎÄ×ֵı³¾°É«¡£ Õâ¸ö plunker ÑÝʾÁËÕâЩ¸ÅÄî¡£
compileº¯Êý
compile º¯ÊýÔÚ link º¯Êý±»Ö´ÐÐ֮ǰÓÃÀ´×öһЩDOM¸ÄÔì¡£Ëü½ÓÊÕÏÂÃæµÄ²ÎÊý£º
tElement ¨C Ö¸ÁîËùÔÚµÄÔªËØ
attrs ¨C ÔªËØÉϸ³ÓèµÄ²ÎÊýµÄ±ê×¼»¯ÁбíҪעÒâµÄÊÇ compile
º¯Êý²»ÄÜ·ÃÎÊ scope£¬²¢ÇÒ±ØÐë·µ»ØÒ»¸ö link º¯Êý¡£µ«ÊÇÈç¹ûûÓÐÉèÖà compile º¯Êý£¬Äã¿ÉÒÔÕý³£µØÅäÖÃ
link º¯Êý£¬£¨ÓÐÁËcompile£¬¾Í²»ÄÜÓÃlink£¬linkº¯ÊýÓÉcompile·µ»Ø£©¡£compileº¯Êý¿ÉÒÔд³ÉÈçϵÄÐÎʽ£º
app.directive('test', function() { return { compile: function(tElem,attrs) { //do optional DOM transformation here return function(scope,elem,attrs) { //linking function here }; } }; }); |
´ó¶àÊýµÄÇé¿öÏ£¬ÄãÖ»ÐèҪʹÓà link º¯Êý¡£ÕâÊÇÒòΪ´ó²¿·ÖµÄÖ¸ÁîÖ»ÐèÒª¿¼ÂÇ×¢²áʼþ¼àÌý¡¢¼àÊÓÄ£ÐÍ¡¢ÒÔ¼°¸üÐÂDOMµÈ£¬ÕâЩ¶¼¿ÉÒÔÔÚ
link º¯ÊýÖÐÍê³É¡£ µ«ÊǶÔÓÚÏñ ng-repeat Ö®ÀàµÄÖ¸ÁÐèÒª¿Ë¡ºÍÖØ¸´ DOM ÔªËØ¶à´Î£¬ÔÚ
link º¯ÊýÖ´ÐÐ֮ǰÓÉ compile º¯ÊýÀ´Íê³É¡£Õâ¾Í´øÀ´ÁËÒ»¸öÎÊÌ⣬ΪʲôÎÒÃÇÐèÒªÁ½¸ö·Ö¿ªµÄº¯ÊýÀ´Íê³ÉÉú³É¹ý³Ì£¬ÎªÊ²Ã´²»ÄÜֻʹÓÃÒ»¸ö£¿Òª»Ø´ðºÃÕâ¸öÎÊÌ⣬ÎÒÃÇÐèÒªÀí½âÖ¸ÁîÔÚAngularÖÐÊÇÈçºÎ±»±àÒëµÄ£¡
Ö¸ÁîÊÇÈçºÎ±»±àÒëµÄ
µ±Ó¦ÓÃÒýµ¼Æô¶¯µÄʱºò£¬Angular¿ªÊ¼Ê¹Óà $compile ·þÎñ±éÀúDOMÔªËØ¡£Õâ¸ö·þÎñ»ùÓÚ×¢²á¹ýµÄÖ¸ÁîÔÚ±ê¼ÇÎı¾ÖÐËÑË÷Ö¸Áî¡£Ò»µ©ËùÓеÄÖ¸Áî¶¼±»Ê¶±ðºó£¬AngularÖ´ÐÐËûÃǵÄ
compile ·½·¨¡£ÈçÇ°ÃæËù½²µÄ£¬compile ·½·¨·µ»ØÒ»¸ö link º¯Êý£¬±»Ìí¼Óµ½ÉÔºóÖ´ÐÐµÄ link
º¯ÊýÁбíÖС£Õâ±»³ÆÎª±àÒë½×¶Î¡£Èç¹ûÒ»¸öÖ¸ÁîÐèÒª±»¿Ë¡ºÜ¶à´Î£¨±ÈÈç ng-repeat£©£¬compileº¯ÊýÖ»ÔÚ±àÒë½×¶Î±»Ö´ÐÐÒ»´Î£¬¸´ÖÆÕâЩģ°å£¬µ«ÊÇlink
º¯Êý»áÕë¶Ôÿ¸ö±»¸´ÖƵÄʵÀý±»Ö´ÐС£ËùÒÔ·Ö¿ª´¦Àí£¬ÈÃÎÒÃÇÔÚÐÔÄÜÉÏÓÐÒ»¶¨µÄÌá¸ß¡£ÕâҲ˵Ã÷ÁËΪʲôÔÚ compile
º¯ÊýÖв»ÄÜ·ÃÎʵ½scope¶ÔÏó¡£ ÔÚ±àÒë½×¶ÎÖ®ºó£¬¾Í¿ªÊ¼ÁËÁ´½Ó£¨linking£©½×¶Î¡£ÔÚÕâ¸ö½×¶Î£¬ËùÓÐÊÕ¼¯µÄ
link º¯Êý½«±»Ò»Ò»Ö´ÐС£Ö¸Áî´´Ôì³öÀ´µÄÄ£°å»áÔÚÕýÈ·µÄscopeϱ»½âÎöºÍ´¦Àí£¬È»ºó·µ»Ø¾ßÓÐʼþÏìÓ¦µÄÕæÊµµÄDOM½Úµã¡£
¸Ä±äÖ¸ÁîµÄScope
ĬÈÏÇé¿öÏ£¬Ö¸Áî»ñÈ¡Ëü¸¸½ÚµãµÄcontrollerµÄscope¡£µ«Õâ²¢²»ÊÊÓÃÓÚËùÓÐÇé¿ö¡£Èç¹û½«¸¸controllerµÄscope±©Â¶¸øÖ¸ÁÄÇôËûÃÇ¿ÉÒÔËæÒâµØÐÞ¸Ä
scope µÄÊôÐÔ¡£ÔÚijЩÇé¿öÏ£¬ÄãµÄÖ¸ÁîÏ£ÍûÄܹ»Ìí¼ÓһЩ½öÏÞÄÚ²¿Ê¹ÓõÄÊôÐԺͷ½·¨¡£Èç¹ûÎÒÃÇÔÚ¸¸µÄscopeÖÐÌí¼Ó£¬»áÎÛȾ¸¸scope¡£
ÆäʵÎÒÃÇ»¹ÓÐÁ½ÖÖÑ¡Ôñ£º
Ò»¸ö×Óscope ¨C Õâ¸öscopeÔÐͼ̳Ð×Ó¸¸scope¡£
Ò»¸ö¸ôÀëµÄscope ¨C Ò»¸ö¹ÂÁ¢´æÔÚ²»¼Ì³Ð×Ô¸¸scopeµÄscope¡£
ÕâÑùµÄscope¿ÉÒÔͨ¹ýÖ¸ÁÒå¶ÔÏóÖÐ scope ÊôÐÔÀ´ÅäÖá£ÏÂÃæµÄ´úÂëÆ¬¶ÎÊÇÒ»¸öÀý×Ó£º
app.directive('helloWorld', function() { return { scope: true, // use a child scope that inherits from parent restrict: 'AE', replace: 'true', template: '<h3>Hello World!!</h3>' }; }); |
ÉÏÃæµÄ´úÂ룬ÈÃAngular¸øÖ¸Áî´´½¨Ò»¸ö¼Ì³Ð×Ô¸¸socpeµÄеÄ×Óscope¡£ ÁíÍâÒ»¸öÑ¡Ôñ£¬¸ôÀëµÄscope£º
app.directive('helloWorld', function() { return { scope: {}, // use a new isolated scope restrict: 'AE', replace: 'true', template: '<h3>Hello World!!</h3>' }; }); |
Õâ¸öÖ¸ÁîʹÓÃÁËÒ»¸ö¸ôÀëµÄscope¡£¸ôÀëµÄscopeÔÚÎÒÃÇÏëÒª´´½¨¿ÉÖØÓõÄÖ¸ÁîµÄʱºòÊǷdz£Óкô¦µÄ¡£Í¨¹ýʹÓøôÀëµÄscope£¬ÎÒÃÇÄܹ»±£Ö¤ÎÒÃǵÄÖ¸ÁîÊÇ×Ô°üº¬µÄ£¬¿ÉÒÔ±»ºÜÈÝÒ׵IJåÈëµ½HTMLÓ¦ÓÃÖС£
ËüÄÚ²¿²»ÄÜ·ÃÎʸ¸µÄscope£¬Ëù±£Ö¤Á˸¸scope²»±»ÎÛȾ¡£ ÔÚÎÒÃÇµÄ helloWorld Ö¸ÁîÀý×ÓÖУ¬Èç¹ûÎÒÃǽ«
scope ÉèÖÃ³É {}£¬ÄÇôÉÏÃæµÄ´úÂ뽫²»»á¹¤×÷¡£ Ëü»á´´½¨Ò»¸öеĸôÀëµÄscope£¬ÄÇôÏàÓ¦µÄ±í´ïʽ
{{color}} »áÖ¸Ïòµ½Õâ¸öеÄscopeÖУ¬ËüµÄÖµ½«ÊÇ undefined. ʹÓøôÀëµÄscope²¢²»Òâζ×ÅÎÒÃÇÍêÈ«²»ÄÜ·ÃÎʸ¸scopeµÄÊôÐÔ¡£ÆäʵÓÐһЩ¼¼Êõ¿ÉÒÔÔÊÐíÎÒÃÇ·ÃÎʸ¸scopeµÄÊôÐÔ£¬ÉõÖÁ¼àÊÓËûÃǵı仯¡£ÎÒÃÇ»áÔÚÖ¸ÁîÕâ¸öϵÁеĵڶþ²¿·ÖÖÐÌÖÂÛÕâЩ¼¼Êõ£¬ÒÔ¼°Ò»Ð©¸ü¸ß¼¶µÄ¸ÅÄ±ÈÈç
Controller º¯Êý¡£ µÚ¶þ²¿·ÖÒ²»áºÍÄãÒ»ÆðʹÓÃAngularÖ¸Áî´´½¨Ò»¸ö½ÏΪ·á¸»µÄ¼Çʱ¾Ó¦Óá£
ËùÒÔ£¬Çë±£³Ö¹Ø×¢¡£ |