Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
avalon£ºÐ¡¶øÃÀ£¬ÇáÁ¿¼¶Ç°¶ËMVVM¿ò¼Ü
 
×÷ÕߣºË¾Í½ÕýÃÀ À´Ô´: ³ÌÐòÔ±µç×Ó¿¯ »ðÁú¹ûÈí¼þ  ·¢²¼ÓÚ 2015-10-12
  2973  次浏览      28
 

ÕªÒª£ºÃÔÄãÒ×ÓÃMVVM¿ò¼Üavalon£¬Æ¾½èÆä³öÉ«µÄÐÔÄܱíÏÖ£¬ÒѳÉΪ¹úÄÚ¾Ù×ãÇáÖØµÄ¿ò¼Ü¡£¿ò¼Ü×÷Õß˾ͽÕýÃÀ½«ÔÚ±¾ÎÄÉî¶ÈÆÊÎöavalon£¬´øÄãÁìÂÔavalon³öÆæÖÆÊ¤Ö®´¦¡£

Õ⼸Ä꣬¹úÄÚÔÚÔìÂÖ×ÓÉϷdz£¿ñÈÈ£¬¼¸ºõÿ¸ö´ó¹«Ë¾¶¼ÓÐ×Ô¼ºµÄ¿ò¼Ü£¬°¢ÀïµÄKissyºÍArale£¬ÌÚѶµÄJX£¬°Ù¶ÈµÄTangram£¬360µÄQWrap£¬ÉõÖÁÿ¸ö²¿ÃÅÿ¸öС×é¶¼ÓÐ×Ô¼ºµÄ¿ò¼Ü»ò¿â¡£µ«×ݹÛËüÃÇÔÚGitHubÉϼ«ÉÙµÄStar»òPull RequestÊý£¬avalonËäÖ»ÓÐ2000¶à¸öStar£¬µ«Ò²ËãºÜ³É¹¦ÁË¡£ÔÙ¿´Ò»ÏÂÓ¦ÓÃÇé¿ö£¬Ðí¶à¿ò¼ÜÖ»ÔÚ¹«Ë¾ÄÚ²¿Ê¹Óã¬avalonÔÚ°Ù¶È¡¢°¢Àï¡¢ÌÚѶ¡¢Ê¢´ó¡¢ËѺü¡¢ÒøÁª¶¼ÓÐʹÓã¬ÄÜͳ¼Æµ½¹«Ë¾´ï40¶à¼Ò£¬ÍµÍµÓõĹ«Ë¾±£ÊعÀ¼ÆÓÐ300¶à¼Ò£¨±ÈÈçijЩ¹«Ë¾Ö»½«ËüµÄÃû×ÖÓëºËÐÄ·½·¨¸Äһϣ¬ÒÔ±ÜÃâ°æÈ¨ÎÊÌ⣩£¬ÕâÊÇÌåÏÖavalon³É¹¦µÄÁíÒ»µã¡£´ó¼Ò¶à±È½Ï³çÉйúÍâ¼¼Êõ£¬¼ÓÖ®¹úÄÚ¿ò¼Ü×÷Õß¾«Á¦ÓÐÏÞ£¬¶øÎªÖ®¹±Ï×´úÂëµÄÈËÉÙÖ®ÓÖÉÙ£¬ËùÒÔ˵avalonÄÜÓнñÌìµÄ³É¼¨£¬ÊµÊô²»Òס£

»ùÓÚMVVMÊý¾Ý°ó¶¨

avalonµÄµ®ÉúÓëáÈÆðÍêÈ«ÊÇÒ»¸öÎÞÐIJåÁøµÄ½á¹û¡£avalon×îÔç·¢²¼ÓÚ2012Äê9ÔÂ15ÈÕ£¬µ±Ê±ÊÇÒÔmass FrameworkÒ»¸ö×ÓÄ£¿éµÄÐÎʽ´æÔÚ£¬ºóÀ´×÷ΪÎÒ¿ª·¢µÄµÚÈý¸ö¿ò¼Ü¶ÀÁ¢Á˳öÀ´¡£

Mass FrameworkµÄʧ°ÜÈÃÎÒÉîÉî¸Ðµ½£¬Èç¹ûûÓÐÌ«¶à´´Ðµ㣬ÓëÍâ¹újQuery¡¢MooToolsÕâЩ¿ò¼Ü½øÐÐͬÖÊ»¯¾ºÕùÖ»ÓÐËÀ·һÌõ¡£¹úÍâ¿ò¼Ü×÷Õßʱ¼ä³äÔ££¬¾«Á¦ÍúÊ¢£¬¶øÇÒ¹±Ï×ÕßÖڶ࣬¹úÄÚÐí¶à´ó¹«Ë¾µÄ¿ò¼Ü´ó¶à³Ô¿÷ÔÚÕâÒ»µãÉÏ¡£ÕýÈçÎÒÔÚ¡¶JavaScript¿ò¼ÜÉè¼Æ¡·Ò»ÊéÖÐ×ܽáµÄÈý´ó½ð¹æÖ®Ò»Ëù˵£¬±ØÐë³öÆæÖÆÊ¤¡£

ÔÚÊ¢´ó×öͨÐÐÖ¤ÆÚ¼ä£¬ÎÒ±»ÖÚ¶àÊÓͼ¸ãµÃÔÎͷתÏò£¬Í¬Ò»·ÝÊý¾Ý£¬ÒòΪÈë¿Ú²»Í¬ÍùÍùÐèÒª³ÊÏÖ²»Í¬µÄÍâ¹Û¡£È˹¤×öÊý¾ÝÓëÊÓͼµÄ·ÖÀëÈ«ÒÀÀµÓÚ±àÂëÕߵŦÁ¦£¬ÏÔÈ»·Ç³£²»¿É¿¿£¬Ò»°ãµÄǰ¶Ë»á¸øÄãдһ¶Ñif¡¢elseÓï¾ä£¬Î¬»¤ÐԷdz£²î¡£ÓÚÊÇÎÒ²»µÃ²»Ïòºó¶ËÈ¡¾­¡£

ÔÚǰ¶Ë±»IE6ͳÖεÄÊ®Äê¼ä£¬ºó¶ËÒ»Ö±½ÓÊÖǰ¶ËµÄ»î¶ù£¬Òò´ËÒ»¶¨ÐèÒª·¢Ã÷ijÖÖ·½°¸À´´¦Àí¸ÃÇé¿ö¡£¹û²»ÆäÈ»£¬ÔçÔÚ2005Ä꣬΢Èí¾ÍÒѾ­·¢Ã÷ÁËMVVMÕâÒ»ÉñÆ÷¡£ÆäºËÐÄÊǰ󶨡£°ó¶¨ÊÇÊÓͼÉÏÒ»Ð©ÌØÊâµÄ±ê¼Ç£¬Ëü¿ÉÒÔʵÏÖÈçjQueryµÄon¡¢css¡¢prop¡¢html¡¢text¡¢eachµÈ¹¦ÄÜ¡£Èç¹ûÔÙÍùǰ¿´£¬XSLTÆäʵҲ×öÁËÏàͬµÄÊÂÇé¡£

avalonÒ²ÊÇ»ùÓÚÕâ¸öÀíÂÛ½¨Á¢ÆðÀ´µÄ£¬ÔÚÊÓͼÉÏÌí¼ÓһЩ±ê¼Ç£¬È»ºóÔÚJavaScriptÖжԶÔÏóµÄÊôÐÔ½øÐмàÌý£¬µ±ÕâЩÊôÐÔ·¢Éú±ä»¯£¬ÒÔ¹Û²ìÕßģʽ£¬Í¨ÖªÊÓͼ½øÐбä¸ü£»ÊÓͼÉÏÒ²¿ÉÒÔ°ó¶¨Ò»Ð©Ê¼þ£¬È»ºóµ±ÕâЩʼþ±»´¥·¢Ê±£¬·´¹ýÀ´ÐÞ¸ÄÕâ¸ö¶ÔÏóµÄÌØ¶¨ÊôÐÔ£¬Õâ½ÐË«Ïò°ó¶¨¡£Èç¹û°ó¶¨×öµÃ×㹻ǿ´ó£¬Ð´ÒµÎñµÄͬѧÎÞÐèдÈκιØÓÚDOMµÄÂß¼­£¬¾ÍÄÜʵÏÖÒÔǰÓÃjQuery²ÅÄܸ㶨µÄ²Ù×÷£¬Õâ½Ð×ö²Ù×÷Êý¾Ý¼´²Ù×÷DOM¡£ËùÓÐÐèÒª²Ù×÷µÄÊý¾Ý±»¼¯ÖÐÒ»Æð¹ÜÀí£¬ËüÃǺϲ¢³ÉÒ»¸ö½ÐViewModelµÄ¶«Î÷£¬¶øÔ­À´µÄHTMLÒ³ÃæÖ»×öÁËһЩÐ޸쬳ÆÖ®ÎªView£¬¶øView±¾ÉíÊÇÒ»¸ö¶¯Ì¬Ä£°å£¨Live Template£©¡£Ä£°åÊÇÒ»¸ö·Ç³£ÓÐÓõĶ«Î÷£¬Ã»ÓÐËü£¬´ó¼Ò¾Í»áÔÚJavaScript´úÂëÀïÆ´´Õ´úÂ룬»òÕßÏîÄ¿×éÿ¸öÈ˶¼Ñ¡ÓÃ×Ô¼ºµÄÄ£°å£¬Ôì³Éά»¤ÎÊÌâ¡£

ViewModelÀï·Å×ÅÐí¶àÊôÐÔÓë·½·¨£¬ÓеÄÊôÐÔÊǺó¶ËÊý¾Ý¿â²»´æÔÚµÄ×Ö·û´®£¬ÓеϹ¿ÉÄÜÒÀÀµÆäËûÊôÐÔ²ÅÄܼÆËã³ö×Ô¼ºµÄÖµ£¬ÕâЩÊôÐÔ£¬ÎÒÃÇͨ³£»á×ö³É¼ÆËãÊôÐÔ¡£ÕâЩ¶¼ÊÇMVVM×îÖØÒªµÄ¸ÅÄî¡£

³öÓÚKnockout£¬±ÈAngular¸üÒ×ÓÃ

ÔÚÎÒдavalonµÚÒ»ÐдúÂëʱ£¬Ç°¶ËMVVM¿ò¼Ü¾ÍÖ»ÓÐKnockout£¬±ËʱAngularÉÐÔÚGoogleÄÚ²¿ÔËÐУ¬µ«Íâ½ç¶ÔËüÒ»ÎÞËùÖª¡£Òò´ËavalonµÄ²ÎÕÕÎïÖ»ÓÐKnockout¡£

Knockout¼àÌýÒ»¸ö¶ÔÏóµÄÊôÐԱ䶯·Ç³£¹ÖÒ죬³É±¾Ò²·Ç³£¸ß¡£ËüʹÓÃÒ»¸ö½Ðko.observable()º¯Êý½øÐаü×°£¬»»ÑÔÖ®£¬Ô­À´ÊÇ×Ö·û´®µÄÊôÐÔ£¬ÔÚKnockoutµÄViewModelÀï¾Í±ä³ÉÁËÒ»¸öº¯Êý£¬²»µ¥ÊÇÕâÑù£¬ËùÓÐÐèÒªµÄ¼à¿ØÒ²È«²¿±ä³ÉÁ˺¯Êý¡£ÓÐûÓпÉÄÜÈÃÔ­À´µÄ×Ö·û´®ÈÔ¼ÌÐø±£³ÖÆäÔ­À´µÄÀàÐÍÄØ£¿ÎÒÔÚIE8·¢ÏÖÁËObject.definePropertyÕâ¸öÐÂAPI£¬µ«ËüÖ»ÄÜÓ¦ÓÃÓÚDOM½Úµã£¬ÔÚÆäËüä¯ÀÀÆ÷Ï£¬ËüÄÜ½Ù³ÖÆÕͨJavaScript¶ÔÏóÊôÐԵĸ³ÖµÈ¡ÖµÐÐΪ£¬Çë¼ûÏÂÃæ´úÂë1¡£

var a = {}  
a.b = 1
console.log(a.b) //1

Object.defineProperty(a, "b", {
get: function(){
return this.__a + 100
},
set: function(v){
return this.__a = v
}
})

a.b = 10
console.log(a.b)//·µ»Ø110£¬¶ø²»ÊÇ10

´úÂë1

ÈçºÎʹIE6~8¼æÈÝObject.defineProperty£¬±ã³ÉÁ˹ؼü¡£ÔÚ¡¶JavaScript¿ò¼ÜÉè¼Æ¡·ÖУ¬ÎÒÁоÙÁËÊýÖÖ·½·¨£¬²¢±È½ÏÁËÆäÓÅȱµã£¬×îÖÕ½¨ÒéʹÓÃVBScriptµÄSet¡¢Get¡¢LetÓï¾ä¡£ÔÚIEÏ£¬ÎÒÃÇ¿ÉÒÔÔÚJScript»ìдVBscript£¬Òò´ËÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸öVBscript¶ÔÏ󣬰ÑÐèÒª¼à¿ØµÄÊôÐÔÈ«²¿·Åµ½Õâ¸öVBScript¶ÔÏ󣬾ÍÄÜʵÏÖÏàͬµÄЧ¹û¡£µ±È»£¬ÐÔÄÜ»áÓÐËùËðʧ£¬µ«×öµ½¶ÔÊôÐÔ½Ù³ÖÕâÒ»²½£¬ÎÒÃǾͿÉÒÔͨ¹ý¹Û²ìÕßģʽͬ²½ÊÓͼÁË¡£

´ó¼ÒÏÖÔÚΨһÏëÖªµÀÊÇÕâ¶«Î÷Èݲ»ÈÝÒ×ÉÏÊÖ£¬Äܲ»ÄÜHoldס·Ç³£¸´ÔÓµÄÐèÇóÄØ£¿´ð°¸Êǿ϶¨µÄ¡£ÎÒÉϼҹ«Ë¾Ê¹ÓÃÁËAngular£¬ÔçÆÚ´úÂëÈ«Óɺó¶ËÈËԱд£¬½á¹ûÈ«²¿µôµ½¿ÓÖУ¬ÎªÁ˸²¸ÇAngularËùÓеŦÄÜ£¬avalon±»±ÆÌí¼ÓÁË´óÁ¿½üËÆAPI£¬µ«±ÈAngular¸üÒ×Óá£×ÜÖ®£¬´Ó×ʼÆð£¬avalon¾Í¸ã¶¨ÁËä¯ÀÀÆ÷¼æÈÝÐÔÓëÒ×ÓÃÐÔÕâÁ½´óÎÊÌâ¡£

´ËÍ⣬»¹ÓÐÒ»¸ö´óÎÊÌ⣬¾ÍÊÇAPIµÄÏòǰ¼æÈÝ£¬Ë׳ÆÎȶ¨ÐÔÎÊÌâ¡£AngularÊÇÒ»¸ö·´Àý£¬Ã¿Ò»¸öС°æ±¾¶¼²»Ïòǰ¼æÈÝ£¨ËüÔÚ1.08ʱ¼æÈÝIE6~8£» 1.2ʱÐèÒª´ò²¹¶¡¼æÈݾÉʽIE£» 1.3ÞðÆú¶Ô¾ÉʽIEµÄ¼æÈÝ£¬Ö±½ÓÔÚÔ´ÂëÖÐɾ³ýËùÓмæÈÝ´úÂ룬Òò´ËËùÓв¹¶¡·½°¸¶¼ÎÞÁ¦»ØÌ죬²¢ÇÒ²»Ö§³ÖÈ«¾ÖCtrlº¯Êý£¬Ðí¶àÄ£¿éÐèÒª¶ÀÁ¢ÒýÓã»1.4²»ÏòÏÂÖ§³Ö¶¯»­Ä£¿é¡­¡­£©¡£Ô­ÒòºÜ¼òµ¥£¬Angular¹À¼ÆÔڹȸèÄÚ²¿ÉõÉÙʹÓ㬸ü¿ÉÄÜÖ»ÓÐÒ»Ìõ²úÆ·ÏßÔÚ×öÊÔË®£¬Òò´Ë×÷ÕߏįðÀ´ÕæÊǵÃÐÄÓ¦ÊÖ£¬Ã»Ê²Ã´ÄÚ²¿Ñ¹Á¦¡£ÏñavalonÔÚ¹«Ë¾Ó¦ÓÃÓÚÊ®¶àÌõÒµÎñÏߣ¬Åöµ½Ò»Ð©Æ¢Æø²»ºÃµÄͬѧ£¬ºÃ²»ÈÝÒ×¼ÇÍêËùÓÐAPI£¬ÉýһϾÍÒªÖØÍ·Ñ§£¬È˼ҿ϶¨²»»á·Å¹ýÄ㣬Ï´ÎÒµÎñÏ߾Ͳ»»áÓÃÄãµÄ¶«Î÷¡£´Óavalon1.2Æð£¬Ìí¼ÓµÄAPI¾ÍÁÈÁÈ¿ÉÊý£¬ËùÓÐ×¼±¸·ÏÆúµÄAPIÖ»ÊǾ¯¸æ²»»á×öʵ¼ÊµÄ²Ã¼õ¡£

µ±È»£¬ÕâÒ²ÊÇÒÀÕÌavalon°ó¶¨µÄ×㹻ǿ´ó£¬ËäÈ»avalonÒ²ÌṩÁËÀàËÆÓÚjQueryµÄcss¡¢attr¡¢data¡¢ on¡¢offsetµÈ·½·¨£¬µ«´ó¼Ò¶¼²»Óã¬ÏÖÔÚ´¿´â±ä³É¿ò¼ÜÄÚ²¿Ïû·ÑÁË¡£ÖÁÓÚÄãÒªµÄÆäËûÂÒÆß°ËÔ㹦ÄÜ£¬¶Ô²»Æð£¬Õâ²»ÊÇavalonºËÐÄ¿âÒª×öµÄÊÂÇ飬avalonÒª±£Ö¤Ð¡¶øÃÀ£¬APIÔ½ÉÙÔ½ºÃ¡£µ«ÊÇ£¬Èç¹ûÒµÎñÏßµÄͬѧµÄÈ·ºÜÐèÒªÕâЩ¹¦ÄÜÄØ£¬ÎÒÃÇÓÐOniUI£¬¸÷ÖÖ×é¼þÓ¦Óо¡ÓУ¬¹âÊDz»Í¬¹¦ÄܵÄÈÕÀú¾ÍÓÐÈý¸ö¡£

Object.definePropertyʵʱ¼à¿Ø

×îºóÊÇÐÔÄÜÎÊÌ⣬avalonʹÓÃObject.defineProperty½øÐÐʵʱ¼à¿Ø£¬²»ÏñAngularÄÇÑùʹÓÃÔà¼ì²â£¬ÔÚÐÔÄÜÉÏ¿ÉÒÔ¿¸×¡20000¸ö°ó¶¨¡£µ«ÓÉÓÚÊý¾ÝÓë¼àÌýº¯ÊýÖÁÉÙÊÇÒ»¶ÔÒ»µÄ¹ØÏµ£¬Èç¹ûÒ³ÃæÉÏÓиöÈýÖØÑ­»·£¬ÇáËɾÍÄÜÔì³ÉÉÏÍò¸ö°ó¶¨¡£Òò´Ë£¬Î´À´»¹ÐèÒªÒýÈëÆäËû·½°¸¡£

Ŀǰ£¬Ïëµ½Á½¸öÓÅ»¯µã¡££¨1£©ÔÚViewModelÉϼõÉÙ¼àÌýº¯Êý£¬Object.observeÕæÊÇÉú·êÆäʱ¡££¨2£©ÔÚView¼õÉÙÈßÓàµÄDOM²Ù×÷¡£avalon¸üÐÂÊÓͼµÄ·½·¨ºÜ·½±ã£¬Ö±½Óvm.a=1£¬¾Í¿É´¥·¢Ò»´ÎÊÓͼ¸Ä¶¯¡£Òò´Ë±ØÐë¼õÉÙÒ»´ÎÊÂÎñÖжÔͬһ¸öÔªËØµÄÖØ¸´²Ù×÷£¬AngularÓÐ$applyÊÖ¶¯´¥·¢£¬avalon¿ÉÒÔÓÃ$unwatch¡¢$watch£¬µ«¶¼²»Ì«ºÃÓá£ÕâÄÑÌâ×îºó±»FacebookµÄÐÂÈñÊÓͼ¿âReact¸ã¶¨ÁË£¬ËüºÅ³ÆÊÇʹÓÃÁËÒ»ÖÖ½ÐVirtual DOMµÄ¼¼Êõ¸ã¶¨¡£ÏÔÈ»£¬Õâ´ð°¸Ã»Óб©Â¶Æäȫò£¬ÆäËûʹÓÃVirtual DOMµÄ¿â£¬ÐÔÄÜÒ²ºÜÄÑ×·µÃÉÏReact¡£

ReactΪÁËÌá¸ßÐÔÄÜ£¬Æä×îºËÐĵļÜ×ÓÊÇÆä»ùÓÚ²ã´Î½á¹¹µÄUUID¼¼Êõ¡£ÓÐÁËËü£¬²ÅÄÜʵÏÖ½ÚµãµÄ×îС»¯¸üС£±ÈÈ磬һ¸ö¶ÔÏóÀïÃæÓÐ30¸ö¼üÖµ¶Ô£¬ºóÀ´¸üиöÔÏ󣬻»³ÉÁíÍâ11¸öеļüÖµ¶Ô£¬ÕâÑùÎÒÃÇֻҪȥµôÒ³Ãæ¶à³öµÄ19¸öDOM½Úµã£¬ÔÙÐÞ¸ÄÒÑÓÐ11¸ö½ÚµãÄÚÈÝ»òÊôÐÔ¼´¿É¡£Èç¹ûÄãµÄ¿ò¼ÜʹÓþ²Ì¬Ä£°åÀ´ÊµÏÖÕâÒ»¹¦ÄÜ£¬Õâ30¸ö½ÚµãÐèÒªÖØÐ´´½¨Óë²åÈ룬ÐÔÄܿ϶¨Ò²Ã»ÓÐÕâôºÃ¡£avalonµÄÎÊÌâÔÚÓÚ£¬VBscript¶ÔÏóÖ»Òª¶àÒ»¸öÐÂÊôÐÔ»òÉÙÒ»¸öÊôÐÔ£¬¾ÍÐè»»ÉÏÒ»¸öеÄVBscript¶ÔÏó£¬ÓÚÊǶÔÓ¦ÇøÓò²»µÃ²»È«²¿»»µôнڵ㡣ĿǰavalonÖ»ÊÇÔÚÊý×éÉϽøÐÐÓÅ»¯£¬¶Ô¶ÔÏó£¨hash£©»¹ÊDZȽÏÎÞÁ¦¡£µ±È»½â¾ö·½·¨ÊÇÓе쬾ÍÊÇʹÓÃObject.getOwnPropertyDescriptor£¬µ«Õâ¶«Î÷ÊÇVBscriptÒ²¸ã²»¶¨µÄ¸ß¼¶API£¬Òò´ËÎÒÖ»ÄÜÓÃÔÚδÀ´µÄavalon2ÉÏÁË¡£µ±È»Î´À´£¬Æäʵ»¹ÓÐProxyÕâ¸ö³¬¿áµÄAPI£¬Ëü±ÈObject.defineProperty¡¢Object.observe¸üºÃÓá£ProxyÈÃJavaScriptÓµÓбÈRuby¶ÔÏó¸üΪǿ´óµÄ·´ÉäÄÜÁ¦£¬ÓÐÁËËü£¬ÕæÊÇʲôºÚħ·¨¶¼Äܸã³öÀ´£¬Ôª±à³Ì¾ÍÊÇħ·¨µÄçÍ·×Ê¢·Å£¡

¸üÊʺÏÇ¿½»»¥Ò³Ãæ

ÏÂÃæËùʾµÄ´úÂë2ÊÇÒ»¸ö¾­µäµÄ±íµ¥Ê¾Àý£¬ÓÐÊäÈë¿òÓëÊäÈë¿òÖ®¼äµÄÁª¶¯£¨firstNameÓëfullName£©£¬ÊäÈë¿òÓëÎı¾Ö®¼äµÄÁª¶¯£¬CheckboxÖ®¼äµÄÁª¶¯£¨Ï·½µÄȫѡÓë·Çȫѡ¹¦ÄÜ£©¡£Í¨¹ÛËùÓдúÂ룬ûÓÐÒ»ÐвÙ×÷DOMµÄ´úÂ룬ûÓÐDOMÂß¼­£¬ÒâζÒÔºóÎÒÃǽ«Ëü·Åµ½NodeJS»·¾³ÖÐ×ö¸÷ÖÖ²âÊÔ»á·Ç³£ÇáËÉ¡£´ËÍ⣬ҲûÓп´µ½Ê¼þ°ó¶¨£¬ÕâÕýÊÇMVVMµÄÉñÆæÖ®´¦¡£Ã»ÓÐʼþ°ó¶¨£¬avalonÊÇÔõô²¶×½µ½Óû§µÄ²Ù×÷ÄØ£¿Æäʵ£¬avalonҲʹÓÃÁËʼþ°ó¶¨£¬Ö»²»¹ý͵͵ÔÚ×ö£¬ÒòΪʼþ°ó¶¨´æÔÚ¸÷ÖÖ¸÷ÑùµÄ¼æÈÝÎÊÌâ¡£±ÈÈç˵£¬¹Û²ìÊäÈë¿òµÄÄÚÈݱ仯£¬ÒªÇóÿһ´ÎµÄ×Ö·û¸Ä¶¯¶¼Òª´¥·¢»Øµ÷£¬¾ÍËãÔڸ߼¶ä¯ÀÀÆ÷Ï£¬¹âƾoninputʼþÒ²²»¾¡ÍêÃÀ£¬ÐèÒªÅäºÏµ½compositionstart¡¢compositionend¡¢DOMAutoCompleteÕâЩÁ¬Öм¶JavaScript¹¤³Ìʦ¶¼ÖªÖ®ÉõÉÙµÄСÖÚʼþ¡£ÖÁÓÚIE6~9£¬¾ÍÐèÒª¸ü¶àÉñÆæµÄʼþÁË¡£Òò´Ëavalon²»´òË㽫ÕâЩ·³È˵Äϸ½Ú±©Â¶³öÀ´£¬ÕâÒ²·½±ã×Ô¼ºÒÔºó²»¶ÏÖØ¹¹ÓëÓÅ»¯¡£´ËÍ⣬MVVMÀïÃæ×îÒÐÖØµÄÉè¼ÆÄ£Ê½Êǹ۲ìÕßģʽ£¬Òò´ËÄã¿ÉÒÔ¿´µ½·Ç±íµ¥ÔªËصÄÎı¾²¿·ÖÒ²ÄÜʵÏÖÁª¶¯£¬ÕâҲ˵Ã÷£¬MVVMÊǷdz£ÊʺÏÓ¦ÓÃÓÚÄÇЩǿ½»»¥µÄÒ³ÃæÖС£

<!DOCTYPE html>  
<html>
<head>
<title>avalon 101</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="avalon.js" ></script>
<script>
var first = 0;
var model = avalon.define({
$id: "test",
firstName: "˾ͽ",
lastName: "ÕýÃÀ",
fullName: {//¼ÆËãÊôÐÔ
set: function(val) {//setter
var array = (val || "").split(" ");
this.firstName = array[0] || "";
this.lastName = array[1] || "";
},
get: function() {//getter,Õâ¸ö±ØÐë´æÔÚ
return this.firstName + " " + this.lastName;
}
},
arr: ["aaa", "bbb", "ccc", "ddd"],
selected: ["bbb", "ccc"],
checkAllbool: false,
checkAll: function() {
if (!first) {
first++
return
}
if (this.checked) {
model.selected = model.arr
} else {
model.selected.clear()
}
},
checkOne: function() {
var bool = this.checked
if (!bool) {
model.checkAllbool = false
} else {
model.checkAllbool = model.selected.size() ===
model.arr.length
}
}
})
</script>
</head>
<body>
<div ms-controller="test">
<p>First name: <input ms-duplex="firstName" /></p>
<p>Last name: <input ms-duplex="lastName" /></p>
<p>Hello, <input ms-duplex="fullName"></p>
<div>{{firstName}} | {{lastName}}</div>
<ul>
<li><input type="checkbox" ms-duplex-checked="checkAllbool" data-duplex-changed="checkAll"/>Select All</li>
<li ms-repeat="arr" ><input type="checkbox" ms-attr-value="el"
ms-duplex="selected" data-duplex-changed="checkOne"/>{{el}}</li>
</ul>
</div>
</body>
</html>

´úÂë2

´úÂëÖ´ÐÐЧ¹ûÈçͼ1¡£


ͼ1 ±íµ¥Ê¾Àý

ÔÚÆóÒµÄÚ²¿ERP¡¢SCM¡¢CRM¡¢BRPµÈ¸÷ÖÖϵͳÖУ¬´æÔÚ´óÁ¿±í¸ñÓë±íµ¥²Ù×÷£¬Ïñͼ2ÕâÖÖ±í¸ñÈÚºÏ±íµ¥µÄGRIDÒ²·Ç³£³£¼û£¬Òò´Ë·Ç³£ÊʺÏavalon¡£


ͼ2 ±í¸ñÈÚºÏ±íµ¥µÄGrid

¹úÄÚΨһ¼æÈÝIE6µÄMVVM¿ò¼Ü

avalon×îÔç¿¿¿Ú±®Ïà´«£¬ÒòΪ¹úÄÚÄܼæÈÝIE6µÄMVVM¿ò¼ÜÒ²Ö»ÓÐavalonÒ»¿î¡£ÄÜͬʱ¸ø³öÒÆ¶¯¶Ë¡¢ºǫ́ϵͳ¡¢Chrome²å¼þ¡¢Î¢ÐŹ«¹²ºÅµÄÀý×Ó£¬Ò²Ö»ÓÐavalonÒ»¿î¡£avalonÒ²Ôø¸ã¹ý¹ú¼Ê»¯£¬Ò»¸ö°ÄÖÞµÄÅóÓÑÔÚÓᣲ»¹ý£¬avalonµÄÖØÐÄ»¹ÊǹúÄÚ£¬Ô´ÂëÀï´ó¶ÎµÄÖÐÎÄ×¢ÊÍ£¬¸ÄÆðÀ´Ï൱³ÔÁ¦£¬±ã·ÅÆúÁË¡£ÏÖÔÚ£¬ÍøÉÏ¿ÉÒÔÕÒµ½´óÁ¿avalonµÄÊÓÆµ½Ì³ÌºÍÏêϸµÄ½ÌѧÎÄÕ¡£Ëü»¹ÓÐ×Ô¼ºµÄÂÛ̳£¬ÍêȫʹÓÃavalon´î½¨¡£

Ŀǰ£¬avalonÒѾ­ºÜÉÙÌí¼ÓÐÂÌØÐÔÁË¡£½ü¼¸Ô £¬Ò»Ö±ÔÚÐÞ¸ÄÓÉÓÚÓû§Ò»Ð©ÒâÏë²»µ½µÄʹÓ÷½Ê½¶øÒý·¢µÄBug¡£Æä´Î¾ÍÊÇÐÔÄܸĽø£¬ÎÒÓÐÒ»¸ö½Ðavalon.testµÄÏîĿרÃÅ×öÕâЩ£¬±ÜÃâÂÒÓÅ»¯µ¼Ö¸ĻµµÄ±¯¾ç¡£Ðí¶àеã×ÓÒѾ­¼¯Öе½ÎÒµÄÁíÒ»¸öÏîÄ¿avalon2ÉÏÁË£¬Ëü»áÌí¼ÓÒì²½Åú´¦Àí¿ª¹Ø£¬Ö§³ÖCSS3»òJavaScript¶¯»­£¬»ùÓÚ×Ô¶¨Òå±êÇ©µÄWeb Components£¬¸üºÃµØÖ§³ÖÒÆ¶¯¶Ë¡­¡­»»ÑÔÖ®£¬¸ü¼ÓÊÊÓ¦ÒÔºóWeb¿ª·¢µÄÐèÇó¡£

²»¹ÜÄãÃÇÓò»ÓÃavalon£¬MVVM¾ø¶ÔÊÇÄãÃÇÖµµÃÒ»ÊԵĺö«Î÷£¬Òò´ËÉè·¨ÔÚÄãÃǵÄÏîÄ¿ÖÐÌåÑéÒ»ÏÂË«Ïò°ó¶¨µÄ¸ßЧ¿ª·¢·½Ê½°É¡£

×÷Õß¼ò½é

ÖÓÇճɣ¬ÍøÃû˾ͽÕýÃÀ£¬ÊÇÖйú×îÔçÑо¿¼ÓÔØÆ÷¡¢Ñ¡ÔñÆ÷ÓëMVVMµÄÈËÖ®Ò»£¬ÖøÓС¶Javacript¿ò¼ÜÉè¼Æ¡·Ò»Êé¡£×ÔèòΪ´©ËóÓÚ¶þ´ÎÔªÓë¶þ½øÖƼäµÄħ·¨Ê¦£¬ÖÂÁ¦·¢¾ò¸÷ÖÖºÚħ·¨£¬ÌáÉýÒ»°ãǰ¶Ë¹¤³ÌʦµÄÉú²úЧÂÊ¡£

 

   
2973 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Óû§¹ÊÊÂÓëÓÃÀý
½»»¥Éè¼ÆÊ¦Ö®¾«Òæ»­²¼Æª
Êý¾Ý·ÖÎöÖ®Óû§»­Ïñ·½·¨Óëʵ¼ù
ÈçºÎ¿ìËÙ½¨Á¢Óû§Ä£ÐÍ£¿
 
Ïà¹ØÎĵµ

Óû§½çÃæÉè¼Æ
¸øÆóÒµ×ö´óÊý¾Ý¾«×¼Óû§»­Ïñ
Óû§ÌåÑéºÍ½»»¥Éè¼Æ
´óÊý¾ÝϵÄÓû§»­Ïñ
Ïà¹Ø¿Î³Ì

Óû§ÌåÑé&½çÃæÉè¼Æ
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
Óû§Ñо¿ÓëÓû§½¨Ä£
Óû§ÌåÑéµÄÈí¼þUIÉè¼Æ×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

´ÓÊÖ»úµÇÂ¼Ò³ÃæÉè¼ÆÏëµ½µÄ
ÈçºÎ°ÑÎÞÒâʶÒýÈë½»»¥Éè¼ÆÖÐ
½»»¥Éè¼ÆµÄÕæÏà
µ±ÊÓ¾õÉè¼ÆÊ¦ÓöÉϲúÆ·¾­Àí
ÊÖ»ú½»»¥Éè¼ÆÔ­Ôò
Óû§ÌåÑéÖ®ÍøÒ³°å¿éÉè¼Æ

ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
¿ÉÓÃÐÔÆÀ¹À
Desktop¼°Web-basedÊÓ¾õÉè¼Æ
ÈÏÖªÔ­ÀíÓëÉè¼ÆÓ¦ÓÃ
ÊÖ»úÓû§½çÃæÉè¼Æ

±±¾© ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ
±±¾© Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉϺ£ »ªÎª Óû§ÌåÑé& ½çÃæÉè¼Æ
ÉîÛÚ Óû§ÌåÑé& ½çÃæÉè¼Æ
°®Á¢ÐÅ ÒÔÓû§ÎªÖÐÐĵÄÉè¼Æ
±±¾© Óû§ÌåÑéÓë½çÃæÉè¼Æ
¸£ÖÝ ÒÔÓû§ÎªÖÐÐĵĽçÃæÉè¼Æ