From b3c6189fc6cde6de556bc03c5caac2561f7f3b66 Mon Sep 17 00:00:00 2001 From: Alex Wolfe Date: Thu, 23 Apr 2015 08:58:53 -0700 Subject: [PATCH] update Dart API index, plus Dart guide chapters 3 & 4 --- public/docs/dart/latest/api/index.jade | 9 +- .../dart/latest/guide/making-components.jade | 18 +- .../dart/latest/guide/user-input-example1.png | Bin 21467 -> 19437 bytes public/docs/dart/latest/guide/user-input.jade | 219 ++++++++++++------ public/docs/js/latest/api/index.jade | 2 +- 5 files changed, 165 insertions(+), 83 deletions(-) diff --git a/public/docs/dart/latest/api/index.jade b/public/docs/dart/latest/api/index.jade index f39b9e7df7..b23313ae2e 100644 --- a/public/docs/dart/latest/api/index.jade +++ b/public/docs/dart/latest/api/index.jade @@ -2,9 +2,12 @@ h2 Developer Preview p. - The Angular 2.0 API is currently in active development and not production ready. - This page will showcase a preview of proposed methods to help further the discussion - in the development community. + The proposed Angular 2 API does not yet have Dart-specific documentation. + However, because the Dart and JavaScript APIs are generated from the same source, + you might find the JavaScript API docs helpful: + + p.text-center + Angular 2 API Preview (JavaScript) .l-sub-section h3 Angular 1.X for Production diff --git a/public/docs/dart/latest/guide/making-components.jade b/public/docs/dart/latest/guide/making-components.jade index 1295bcb8ed..63418c0f04 100644 --- a/public/docs/dart/latest/guide/making-components.jade +++ b/public/docs/dart/latest/guide/making-components.jade @@ -1,10 +1,13 @@ .l-main-section p. - As mentioned earlier, you build Angular applications as a tree of nested components. You've seen how to create - a top-level component. You add child components to a parent component by using them in the parent component's - template. + As mentioned earlier, you build Angular applications as a tree of nested components. + You've seen how to create a top-level component. + You add child components to a parent component by using them in + the parent component's template, + and by specifying the child component classes in the parent's list of directives. p. - Given a bootstrapping template with a <parent> tag in the body, you can create a parent + Given a bootstrapping template with a <parent> tag in the body, + you can create a parent component that uses a <child> component like so: pre.prettyprint.linenums.lang-dart @@ -17,9 +20,9 @@ @View( template: ''' <h1>{{ message }}</h1> - <child></child> + <child></child> ''', - directives: const[ChildComponent] + directives: const[ChildComponent] ) class ParentComponent { String message = "I'm the parent"; @@ -43,8 +46,5 @@ String message = "I'm the child"; } - p. - Notice that in addition to using the <child> element in the parent template, you also need to - add ChildComponent in ParentComponent's list of directives //p. [TODO: Motivate communication between components with iterator example that passes index to the child] diff --git a/public/docs/dart/latest/guide/user-input-example1.png b/public/docs/dart/latest/guide/user-input-example1.png index 91e2dcfed1129e6e26f49fd9d251f846769f0fa6..822abea3c9de581935267948287944a7f250e643 100644 GIT binary patch literal 19437 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 delta 21090 zcmV)1K+V7HmjTB-0<>WmSO6gq7RZC*;$nZ`e_n5I0!A6HIa0Cyr`x|9v_;|qApjPK%o(Br zVIIOi1CSh{Tu}%>Yeu}qv_d(BI}p}YAb|*fqHvZ9(~)}6&FIILDxbvo5CFOtfEr66 zP-FpcLJ`j|5@w+|91+4!GLck<@G6A;g%SbcIM)##k(W0WVNC?VHsfz`vi^UD1%iyB zm;yo85bn=~8VYKm(gJy|V20|)|Fg@>Rib*SE;H1#B#Ov*bk{|7+mJIgn!+rE56Cjc z#UiYO@KGt1aX)U6C?k^)ru^H41tF-Gz(e?rNDvy0un_>xROTcF4Pa}50wI+@9xN@4 zN*ut+imCAf@$qa~?l@|Gpg4c{EQvU35SNP!!V(aVG~n5p((ovR(YwNT6-yFR5Jo!j z`XXuaID|O}Hy7k2P#UN>SBoVf6tD78DB~&3mWc1jRD@GGA|Ha4SAdWzK4C5tsGg;d zc(+1HVkF|xSRzIw4h=&XJ(rjumL(17Atds`U@8vfUo6j6&2OZWC>MX{Mo_#t!rKdq z5(dYfDO4mb<)G=q4Y?4INffL0U=VIi<$zY|H4Hhn;2!MK)q}* zhp+KyPiU>QN3$9+IW#$ZJ^2V(C~GCc~82EbLpX3@gXhV_UIm>?iC9b`m>}wPJU$hgc`}3j2r?I1AUs zjd5#y6z+uw;n8>^J_*ml^YLPQA-)t}i&x=$@LK#Nei6Tcx8cw69s&prf=8GUj)WHx zLc|hjL?(ZsAm$LIL?0b`yS_%W5naRwl1_3-KIw?&XC#?K3dwwO4!ML}PwpaX z$!78z`H<`;ztGq;Bbo!vhZaSfK+B>{qm|GqXgg?!X{XV*(@uL!r_*_K8@ea@HdE=@ z^qKS}^o{iW^hSCs{V~0V!C)9L92kC#ScZU6$S8kdtYhq9oM2pKv@_nTX{ed1xu}J! zrK!o(7N}LI?N&Rkc2(`ETCcj6x|O<*daSxgeTMon_3i2n>X+5q)q9!ROdF;jGm)9i zoX=d#+{Zl4yvKa4p`l@};jJ-VL#i=PW39#kjdL0gH9oL(SoW+C)@;>Ednvn`eTw~n{hq_+jO0XdM4Y*tN=_~3D(8i!x~7$8kmh8~V$BN8 zLznDz%Pi-O}pO=4v}@$7<(kFVWtueO|jmhoNJw6Q(25S*Wv3 z=akN4F2S|nhH!=4Z@JsKr@8IAbX^9z3) zo;5Fum&;qmJIK4q`#8*aSkN%>u*Jjn4ZAw*o&IqBKz*@(ss4VGZ3Za~hyP}T8`&Gh z8_hJ@W|N}^I}J5!G3zzAF;6mIV7}jz>jo)*y~w)Gy2D1_Cd#JRrpD%;E!#H0Hs7|& z_PQP2&dV;xZlm25d)(gLUSeNqf7t z!(HdP*1NuRb8r*8ZF0Nq&UGK_zR11F{j-Oshr(l@N2jNyXS(MG&s$!)UU6Payv}*k zyo0^xdLQ-v;N#&_=yTBLFJDLB9N*o(9iweVi$`xC{n*dkPvE!Jug#zDpYFfKzb(Kl zKoC$B@F>tCP!zZ$@M(};PtP5uv4_EnzxgNnz{5 z9)z2RXNA{RB38`8Y3+^ZAV(qH(}qb z{-%AR`^1uoHz(Olnm+0LWW&k1laEc&oFbTVD4mv`lD<3rlOR@5CFseB%Gi+6EesK^ z5k40MidKm_#eU*)@zYGd%<{~Cjx4{dm06vV07-?UOBy0wFMXLEnY}stT~2Jy&YZs7 zl-&J!YI*5-M`Sv(99i>Jld03Ew#pskCGxg>pZwMN-HK?%jsmP;QbB#8F4{a_QrarN zQ$8&6FRCnhKP`FMq3PPwWz#Rsu%EGb#?#{P;vZ*{GlesoW|_^JKkMOt?4a3O=U{U( z<}}T`{yEJ!SRz3b%^QYnW@4YueVvtgT;Xxo-KoPwOS?Z&U_X z?%!avVey7{8$}zhZVKGAZ?o~{vdtg2NVnYH8nLyu%DSpz8+}{RwkO+@x1asd>&NOH zhC9l3eBLSB*|sZwS97&zb@gte-OFn58f8uAo{4*|>fbzhz zpVEK2c`*85(;=@z`+m0idBb7u;nG^Hc1CS?ousaoW896_n@Kls-1IdLF#Zd)xc2^u59RT_3zYoc);c z@oDe0PmE7%Kihq7_!9l)USD2cpIo32sP+N`>ha7>fLA*K*r{mma0P(L=|6L+Jh1+A zBEr}}qv(Hs;Qn(NWk7of*ck|rG!G!A5nvN)RtU4uo!WjU1_JKtI@AzDT?Lu0E-HYr z6liPmzOV1KF#w|h;IpEyuXkf#-{E*M9(L zBWapKC)SAo000SaNLh0L048$)048$*^K5kr0005AiVPb80XCDS4LAZbG?U;BOn-@^ zQY8QYKmbWZK~#7F?Og|8RmIZ&a?^Y72_!%WBtYmzKme1Ili;X_h{zdRd2wzh;A^Yv@1wDeY+?X|wsQk-r%N=L~@u#9<&)Q~V$TnF#|6 z;z-)2?^}kCQLc@J{B$B|jDS+M5GUhI{Hb(jT6**KN@>!wkIG|MSWl zlL`8C&)kY&EPb?6iUGJk8}ztPH=|zEQfS%A@VcKV@-y$dj=8YC34tkwa81@kND%c z&|F+$s;)p;WfjbV=uBg>bALf#R9AG341tR+hzM#rX&?eYel-p#1d(yrKz6y~;LP_m z#TnSW?+^-WY~k(*l$VyFvc?PtXFqi47LCXdUpSB|8jmM>+gKLMFbGWE%TH&68k3P; zr+Uwp*>cLL$xFkb_#?ScWBHggDHK8Uy3x9_fG=r&J)<4Zb;H)MPK|M|5hcwrs zEIkpcXHCJgtJsb6$6{)1J2=~jGgyLvLl_Ui^; z7Zc1ZUx-8H7pPk9)idt}5rr*l7_p@d{24@}naxB}mQ#_3U7tUP8|M6kM>Zb7eL^5Q zxv^})eGUMn+1S1GBfR~?VRQ&Dz?1Jg;l(dsz+EH|CpMv8!GB0^gRp;QRjH2rHbNmn z4lGAPZABSu92^NVd&$LrtV0oydTssF90WMpw0Wo}hMD;#&m@?cwyv&D)9Nd=)D0hM z6Noyue!o^rFE7(dii)(d@?!1i!5!MGk1x@ZPL!x3Pc7M8Z;8oE(ANIAQd^f)rdLf$ zl6II$F|0wW$bU)JKD_-R4LzUMRv*sQDyz!1w1iFCGuQYMmoC%3K9s4|o^5_fLX_N10*^^&$R z45c3p`A^>Hab~SBWv}-A$D6eDoND#bEPX$j%zD=X1b^Ce24NdG$m%1h5GxUhgWDOb zG?R^h$q6pbj^MZtPcKi7>^eFh-TxdI0_|BPJ;sejOXgAv!WKe~r|s=1)9Bpds8?L~4% zKI(#^nLY*qW&5z`gU4|F6TX=F>NpIZFakZ=2f#&U5t*rE2DFA|A#euR*=)Yw6e%A< z2*MzeGa-(XpRNYAm6eJuIF^!zW7&Bq&dbEXbwA+U2j(Kn$rY})8glmhfY%?tA4_&0 zLx0}#&oFbwhgh3dj@p_^B<%eHo06(wb7VhK^NUfVdZG9bbyrtggDSaOortv5R1}uv zA#M9wtXsJmm^uUJhX=y3rUZMIe}wz)zY`C=`6?d2awtX(pNVhR?!qt27U7e9hjH}i zCd~cM!+2-iZe+8#`V(8Rgl&5Di+H3Z?tjNa|9%=@?LDgMH`i7o{ZJWvon2whIgYs( z^~WW1e?&@YIm(Oku{UWC-e-Rc*Kfk1W5os(f(a6kl9z;>vT7xVD3*}1*3dEp+J9sQ zF$hAMk&=>vty{Ok*Vh;Q`}c>Nn_C0HwAf5F!kH*n*ug6ZcyIM4oL66gc6J5Wv+6cH zv-bw9sIzDGLLA!u4PIJ50EhP7gD$ySQQv(e-oNS!44&8>T`zhLIFx`ZpST~_MESz8 zo*cZ$IF=Dq1Y(nmC(C&kE7!y#V}Dyde!l$)e9f21LnVPk4YQckp5S-ix z)7Hgf^q|i0bFfE9Z$G3Y9K^=m8L++SS*)2h73Xybr947usG<gN_kTTw`v*tD zy?761eRdC0`h9|T9=Z(L3Mc&I@-MLUii;5$&UzO-g6zpZ;KeD!FsbVgIO1%AQ@c2f znK}%wr(TPH-gYheggC0%TN45Q7A{g1u-2F*MGGGeC)#EQ1vRV{rDHyR9CXZKy)7Y2v!FdqioMw%>QL6 zK0+`qsDb+bO^493rEj^7h=+&5Y!ABhpQ%^4?lA<7VZBOTIUW3%1yzs+A#>~MmgeFe~(Q+EWui|!)>J%urqm}d%FR6=jE^Pm8Tm< z#F8D0ZV%UrEZDf2;D4*x!^xIRDhC8vL=eu^8d`@yn-PdKBQrBo5l3)vu)1HhY86I| z7y%Ct4@Dp?HdQgoX37e6C}yHwJ-eazfWGkJeROyyLUKOGKNQ$5O%fzpav9g(YwQF-hz#`YM4t{sEnW)4J1m;RW@etA&F zuroWtzH}2dZ{7iuTOh*PQO;p&WoD&l4OHd>>G{}PQ--9fI&@>3Y-?*_OBt%VrV3;b zDV|g+_RrbY8-IarX_P-UVndBR!aaQu3tLoG*TKOp6j$8#49XHm;kJn%Az=DUeEsk= z3~|#?PXOdqRiUQ3nssw-lF@+mtEFn*T0`>?XcGc4SeTHI5Ip+mqj>u1r&Vi4j~)#d zS6787Mw(Nbc~U~KgT0fJ63lJw>>4(3oCEyP{j$NxNq=`Z!`)UOt}oYKM*#t|gT2K7cga8srvm3HQR+aM8N2aNj_G ztk2noH-9;T+qu}V3_DagcgM|-jf3BY&oKE74{Vrm8-@h9sxlnx9pO$wwVB%;94;-5BwkAeJtetx+5=6{><-FM$%?b@|!_OK(eNoZAIR~vtI zsIHU!10t#jupA95%gRu}ku~$kcFdXkIzHXOJ&RA?N63&a=wMfY@Wu z9e-g@q((JojtqY|*qgwu7{EOQK|L=A=HHJO7B0u0yaHsb{~j;=_Z_Utt3<)!z1V=h zi1F}5@zEVv`{N>tOQk5wsX!I`Qc-1tewSQ{X^*~utKYZ}uPj)Mqs3~ufcqR=>8me> zxwMk^K-q~y*trn6CN>=2m6_PNb0gm4%72|*bsh?{cH*P&wjs&f9wWw1#*8cb0!ih_ zm;FSWD%7VYBQ-M(DTj}vf`Ynye3`{$oUn%GAz=FiL-VixxLAWgq(ot-x^(G+h=>R{ zIB?YC2WtGjNv(=7I7(|(NZzy@^Jm?Mw+%(GO9%M7+9~ym z%IpMuyI>Bked+@sYd?xfPzifBWBKRvFn#tm+%)qIJTzq_!jOe6AHRf$zuJt=3HIpF zzcac=gdo7j2O$MJG4rWecyHf+?0^1zEll^`jTA)eANxHQDJc6VuMVoEhobRiM>f|WDPc%$rY4~O14rJT7BcgjWLd(;!?^qcEdk;k4 z05j6|Zo!s>3PkqmhhE%`cYjp+941s3rr?)tdnuyW!jp1rX>kcvO{nzY=mgKmX!MAR zMwo{^>Ps?kVCN2;sHBKb*~TM01_NT+!l^gw(2Dx@W)q1efTGC>XOxV&uR8i3B7L*Sfy0*BLcQGdzZ?ts7`)aDnW zluN-PI{0!=rf*CD3X=C@+t!1q42nc-r$E@I9>tMzPt_lD-ciISFeqGdD`kvo8Yu9Zzh4>W_e+>wV6bJ z`>4N!K+YWM{D^9wf>+UBqF}4$9U`-03j|@MFu6(`Hz8#)Sn$c1tpxFHWtUo|v;1j9 z3{tK_XqA`wq#hQa^q`ndA&;dVL3GI~<*Oj^mUoQR<5e0o9VM%RzFQ(%xme0-LKw`iinElbzhfB+4i@53?U7Wc^hd>5|Fi^wv!6f& z!HB5Ur6nk@ts^23%}tJQb)`mXRT;`<*;SB+@_@6u8(i#dsj*9S__A{Df0($J;L5!S zCx~*dLZU{H(CTWGT6;xRH8gimcybBUrktxw)cDmLU4P-}>I{3O6?|$=y%3Fi6lEo) z+@Fx;UJ^hZ*PMum8kc50JiXu|JMOGiHsv^#G|)q%CRlIJatO4^KFDu{fgqN~rCFQW zawIJN81ojcMUICL!n$6HYbJI>?b^@q{*nWz@b!d8L@!Ld;Tl{J;)d)aTk!tu53r}$ z8Rt#70e}CRI0$}@X4KUwJXLIo?4_8C(y-~Xk1*@)6*%wBH*oWy4#-^gDc+pB6sCVY zj)%q%MkhDst2L{0872~(uy8uQ+n^%lAeO#16N@Um;Nw_>qM}lmNi-#%As9MpJT4j7 z1CgQraHBejjr2v)3$OA|(VRZJ7_*AN$zbtF@qdc$^;v)~)NJruA!*I`TOrUU`yjuy zaq5UG5lJ&SBfQTb3~gN4)%YMW z4}Ya<%;%<|Jyktq1`q_7qGUEAhC2qdL%%V@5j6iDymQP27vC@)|9$WQ+&6w83Rb>> zxDKQ7;&VYC(?}a_MK4U=vo2xL6m2Qe(%WGD z+cpqr^BF``+yxobN0$$8U|qBQ6~v&5iGK~16ub7rr4K%WyEcx+;-YG*ia5b5b|^;A zScnUMx*l~!^>AZ4$>GF3HXkY--t_iF^y(3;cHe7Ci&01w^$Iw^gL@V}WV>wa-4Grd zhatBQMFtOLQJhC$rye-}>XG<>s_u+{#wFIWf+CdFQ|Zskn{1c^k(zDdp({HNKYw)U z*#|wk0T&M%jEm17f*{ey*Qf)<_?XaFal_T)f$vvh`q&W&B%wj8Mt*h^(|_KL$HrZ}`_1bdb%KTKU`s`giboH`Cxum9mWqUZm z$y9~oKYWUp{&f=`e(h6iOwQ-loh0Ia3$j+1SD+}KJMq+=s^`Wew0hK#n16iQcf%Cc zHFF&B>{}bLFO#!~xg5tfEW$Gn-h*qdx)#?z{T_bUbqwX?{iL}1a&AI$qwmfeCgX;? z?#Jv;zQ*FUo3VrYKh?60&Wc6Gv4*yTK${YX%of$$@j7wh1hTWU8)lK#iA0}eD5rBX z%?G`Q55rI_!naA8D5@(%*?+#(NEfZxgl+gHp$NrwImk=fj(vkJM^6uLzNp6LRiEI} zTYtc?r(eVDXRm{K?mhT$>3)UmB81oTtcZm^h=ZceBKlahs7y^n{Fm?HnYi(o@~wiDRqr>LH_u~8T z;oMhoQ`JwH&}TG0-kXGKtqjR4=HS22AH{Vu-o-OhN8!htufc?;-o^e>s2>Z)Qf1i6|CiX9_s23xXKJqDsz zZ{YRK`*3#$JEW|s!hhtqW+86z7dWtH7t-89ko(h7OuF?}xKX=ZMqO8Gxz3n53BBb! zN4g^sIujX%xzv&cyhOHO8j)R8?QDZ>Xh&el_xNnP89tXkg*~H3p@%zJ9iwf6rIrVS zK;#^{E^O;EhPjmX?XG<0}(}?!GG|(9>N{(48iS-6EG&k z0om&w$JQ<%V$hJ@2q|^N9b~r&+pB~(yzY7cL&_@h^NRB z1yJW8kxg$5UTl25tOMgnD}j_7j6^k-z_Ey!-FDI36>J z+P3pC>wmfs6qVFdT$hPJ&PwQ4L2p5PGxu901cx2QCm*lG=JaxysT;+$FX3{U1f6Wj zPH}-i0aFOh&VgyE&y{%s319yRjE{k9xIdhj_drn{l@)a~mo1hEKT1i-MW}HILh#7x z7@7Gl-d(-|%XS{Y{@CfbW_$>!|p_cDnr;T8gFoo>W9d#WP=X(!tGss5lG~$4(@|%NqbwpJLAH* zAh?U7Fwq}WLfkz63cMKp2=-hOhse?$C_a1y7$EkiIF38I!QCqY{!WgHjWO9XV|fia zynnwCZ+EQ5&%>us*bl=l3 z`#C(bj|X_)9Et(m?2!`af=x>fBjd7*(ZOHHNyCZwojd_{1sv^3loc9!jJ_USq66U< z7K)pn8IQ<7AAOaJ1pgx5bEi#Mr#*;5A?i#EU;oAPqVraskju&G2NEKw4+}Huy`ky z|F{f$4*i0swzH6qYcXzU6vFFMacD8s+C2^-A+0}3(hpN2&Eqfb5adLz1&bpf=Gimx_P?8(awzAy$6vO;De}2GeSCaLVtM2j)?Sj z#-UvaCTJL`?qA1Gsib99((aHhcGa9IP$n3B+Qg#P7kL z4d39QACtHt*%bpil0`G=1Aj#0o%iNpWsUu#AkgNzSV9zrKrV!FX2fB1SJ)aM6smui zdHT=B9?oR1#7>}u8ZPtjNH<)0(vPyVB0wo$>0A}_kQGgQx|0y>v`Un6>C{n}d!C!9 zuF-W+?0JC8hWi<{V(o+@wS%)W97qh+6%{;0$VCJmP!fGDrD7$mkbm>yJk?muIZWge zIWw>1bXy+GqHdR)gU&`Nl^M1}A$ENwiVI3uC);e#_V{?gnLGPMiQDn%bF<-l%Y7IX z6A2URvo{rD&7$w{+NM~1F>@4xJgH|!fk_q$tf6fn(B=g4o4cj<07OU@{)YcW4PFR? z_v(y>K|4(UunNc_`)JJYL2XYnK&~f@BRiI zdQZl~b3Vn`?h!m@TZ`(F9Bj)jhGWbnxS>}F-0elX*g|Nn)N6h9$3fsMClJAI2|7j@ zESZXunMjaN4A81%a?eqn_cBt;{mJw)Yw2a_GnT#@Wz1eW;(s!aDwux+nN=AQ$9v}0 ztB`Vuppw#3zCkc*rV;{BL9gGY5iuy*U|XduwHvM)C~7xiAi{)_ti$;JlP~c7k`*{n zQ;l{ZUNC$1#)zrYaP0+M;ma0C7o?tsc3Nt)Uj94?oaF=}9T((0i4+FX8_0bUG)!kf zpp$Wbz#R)!h=0iyBm*&dSo` zC9hBhX}kohh)N1$-bREa_53O@t<+^n{j1mVMiHna;tX_>Oq)q+jrzkOaF$DZ7K|kl z)m9WEY2zojeB4-!zVki&xc?ZE4*r6VAHNmK&OXSxzNZitHfoD+`O2aBQM3@PWm5V#39DVna@$PQ2=q z=twNLs$O1IS%Ua1TURiY8P3ulm8bC^okD1Foq|3UGbN9@mtFajETfe;8pEuO?)lN$ zH1OkVL;~Us(dJA7(~0{7NnLn+gZ97$#MqaXXn%W)Yqk2?GA(24LhV0-#S>oC_GDY! z8Z;@F$|TBHfF5bCtJP}jPDV7eL)yi9xJtx?{Hf;EX}L$YYM;KjT05Rm#rS${|4(x? z#9p9%k({BD)YsJMt_UQT;buWn*0P?4YS;#&zp7j&XeFFMl2&qCU;U8~Xp@aXgVxz_ zHGhiA=qmR_8hwSwNYLU{A3N=6f=BHNl0SFiDJT<{c!N9l!3C3J@yeI$kvHoGmf(tl z6G_O-EhYQqfx`WJk?u^Lr=f9h$co2`Maz(2YKPv#hG0q5th>Md`s;Y(jej@P5c2uwpW})vuHcz(YEF^elG&yCAb6%vC0a!ao!Q)u zsD1+wS{IG4I`+nLnj~Gia3O;HZo-&$k?1w_GF<7j7v96iW845b_9QE`fA4M#7I03sqIBg2V9u)f`>3bCFkk3`eLV+&dCTK6(%(&S7}*z8UcB9?ZQC z=^1AcvRc+~?m(c;2t+_4{y~H|#E5lXULH1X+=#Jb$HGGhq$Spa_++4ztnAd~5^;z3 zK$rgg5X)m51Nzf)NPo>C^qc-5^81bBsXrf{7w5U}s#G|Y(`^9jt*tEPIq=@-+o2bF zga-rd+M(M86W~r+#+hd}N-|2ZciCJV%sBZ-zr&&8@W34`Z4C;-W- zlBm#|d4^qXZMX#O(}|{nXk5C|REx}USEEm_?uejnme#Hd27gWTrQVqX)kY+r&|FJ{ z0N-1~SqFhO`C7)NUU+yoUV7;zMH~W&@#Dugc$jK=_BaVMJv2!Yr;@=8|+ChAWK@a$QK$<~iY zK-}p=k=a(?45@6f?`%1+XF#I>XGXm9fFsAbGIsPRs*C9(#8i!xBDyY+rj(T9#E}$~ zQTfm*EPoh-M;Bn`m{+iH{XwLs#bd$C|Hfl0_Q1QC~GWco;9H?D3?GEkk+ox%l_T}@K+qBn~Z`QJE%C-Dszi2Oy@2jVq z_Neyl;T+Y)+=J`1M@Fc@TMO?Ira6uKr}lY#l7CiMlB|7o-x!sC&<#&&Pu}}559~7C zuqU+jM>4gTO&{SEEsjC3t&<6P}( zNzY%eE`7D(x4xqNl9-```G48}`Kv#SwSEPGHdQrYjlbGWZk4r?^h&Tbql`cL;gNEPpD8=Hfw%k8$W=Ux8G*p-#vwL}k4PqI$+5 zn)@K4^e8GLXR;4+t_-e!hjz9pffxW4LXprqTh)-7L?x>~#&b(oA-)#MZ0RIk0|B;F z<{uQ#dUSza_Ci?ZY5Vf~>lGNE8GL_#UH_j;_)7@n%mHd3J!b=^5kf# zBXmPjd1pKbA;^!+K0gwT}DS0r1D>)QL~Zw5jDv zn($TjbgQ5!MMu*HV*NuaX1&6Oa=xl6Ekr>vj{(;^z~A2oZmy1MP&he&{C}Yp|GzJ+ zO_q6oD-_jeFL-69PruEJF_We^Z@lwv+<3z+cxKTKWK{?T%6{HSwRU+Hb#;jo-{9(< zG0JnMkZ1L?sFkZ%jpL2?&0JM^OsfauYI&54l*4Etg31Fc@yQ4C@ndp@o`B^US*2eM z?NIgTD(;Fk(o_Gc4|+d@5PweQl@>@}>*<$7Ycz@r_Rh1`f81o1j zs7oUR68>M22aQ4;Ig)_8ZvQvp4<@3N(Rwy{FZa6A=E*vBW8Oy5I-xY}gQPXsLL;9L zqQFS`jhC5}3XMBr>TSyOAK?n=s>F@WaO$kJh zN=CoNLE=u%0FB@1_a{-1RzAwOd(P+r?n9LEDyBRoFN;t=S=6eoD#X5(i}B@qUt)8; z3*yFIhv^e8LQIIWvVpaD-uqa#Z9gix7t;QcTXFZa34dr;m4S^*zr-5bAavFWux`$5 zxL^GU`gxkM`^OUq?;nPeoj>B)y%l(jmLYE&*^7qYgw@gOmzD~vW5ZdAMuMd z55k+T^~H>PzQkUh3F$kc6Yca$!g^#L*oH-)&&QU4IP~W}%l6M^V^{YXc=f@l7#2wb z+trmgv43$nK78j@d|P9WF71Y5Y>+z4!6d^&{cSF-6!dTMLmHW&Q20M1RmfJ@7nTLmlPi<=UY`hcvoCP$vuJ z1!t9p_rJQ~Zn}QTkE-aKKhh=<#ilLaqUEWC+-c_&B0stxpf-Aew&RPJw5~%R*M8b@ zNZY$`uI9(|6P{hHWt5a@E8c%VgU1!x4@oIn`tHxQ8_+|0^@rVB>fxWXr$;IdOdEc~ zoqyWY>u%C+d+9ap(VMT7;am&5a+bDi>37_3E81J@Mg4uZHfs=d7N7h=ODIt-WYTIadCPa&HC|Gmi}vp?muQQ=o~ND9dOCi* zO-pCVh4CA-TLRl@*Z;UdJCLwNTX373YJbPwAN-^xWv6PNKQU3m^$%%VDr&Uqk}U1B zJ1@~N_9^Y#OlCG$YKPvwNpr@3wH1ddHLV~^Tit_oJv?7qo0q5UT>7?#4nwrn$*EfY z;f>lutXKLt`I@QPEmJ0I_sv?UrI*&K{?%EI8K{T9>7O>4L4-FK)~A97*cLBdjDM@H zx(X8~PQ=3xKa5_zdZ|H)@NZ=%k)fBv~lol}n6@0o}(gZy#0`hRiwJw|6cqVf(m{umT`aVnu(H3^wp_u}CG1Bkj@ zqoF$P^bhWbl*bq0AV=)T-tEXjIUu-WFI+f&1Qvu&#g&&`iUFm^kvqTvH&U%$bjPyt z_v5{6SG?anjx(P-s>ePF>{x+e7xqMCfCCQt`2*>cNvMSB;O>v`2pT2MAb*T>Fsc0^ zS3*Q~?^z#^J04A(gjc9`Pa5%!h$AsFM>)EMOC%C)2D`N#>{k{31uuuu$a#ts- zF_Ms1PB26ax+UOaHTmg-k$=&caA{|%sF$P4H5Auw-hn%ULlExk0k;7|;AFc2OJ8{n z8#ereh1B?cfetnu9cW^Q=0!zP@pSWoH_v$p$%*;W3aUT)kS8aqquxIPKHh1pS9IYS zgkbq!iB&?OmATkO`Qw$Zj^e+)zQuCK0%{OT!q2g6-(|7R76^;N8@e)!&`GrVsBXc96Km&7C z<>hRIZs%B*(L~M@@({0A@bE>~DHBk=aSc|y`8|H#vJBMqC+WyOjWgVRy+8oK$=3&7 zZXP_bEbtUcvj%}cn|~090cvNegO3_DN@?>-TyU@)B+{E;%nn9cZbHwu9><&0uRxzW zMxcxq)#>jRHRc+mQ!lHQPJZa^5Vkz?QCm~Pm`YSt%ec-!lYgQ%8U^_iyCzd{gNntLOM(ohNe;@djPsF2hHsBxU4MIfc0G3hDGAT_}R6@MA36(j} zIJKE)OJun=w0$o;dv6bned801cf9~L`Sy6`#v9PZfrP4+!^VzRZU8CRaZqt`p$;>( zg$W8Nia(8Y%YOVCH?|1ch_T_glp)4L(UVDcc4D8v{8fiy~m|v|?vzJNS z!SS0Yov}vUlve&7Lz@tYZa#;jWc&7b^2sL=9UYCx$Vgm%`Q;FzX`Q{|XHir_LLef@ z80y9kC}X-{1P5T$6sKbK$}ceIun)o`E3oR#Mc7BLOn;-gcq2byHQrd4f}r4b@c8@= zd@%YI93C7Aj}u3cw5%SXQ+WuBY>2%L6$@FGE1mf$;h}1nNB;|8}S`l$C)tCcOY)Kb`(Mb+QX;YD2xvXhMGWRhOn(6 zAI6!ZN@kEOlqK$G8RzjR0OM(|*qy%NJFqlYu5uOU?8c0n-oVz6HX$yy9ZFZMzMp<1Zio#-U9J#DCCWl@+Xk1L>ZCPIT;ficoxmNN8#H zP)k!pOk0kJ1;-9!1J99s!t{a5S0b(|51v{bN6C5|*}4RGKXn8Pw$4GXfe&H-MbmN7 zlyuC#vm0F-e2Kb?9>C50Be8o271y7nYqg$%@ZGl=AF!;b)yvV#wE*QCHe(%fF?jDd z#D7NihIb{8;BH=zl_wTq)UmtJ#WfcPe)tgE*KER?z1N{*pclCMOCsQWLSKm~JHN)< zX^$e|&M)arx00H^&Lj^aGtaD4aCck6YcG6`j$!^7UYCL+AFm)KoR5@aJ>i7p z(HuJI;hd0h_fe#k)nMPxUtl+4u;Jik@QJd+kP*PTPZr~=x?{i(GnuvopD$U3PG#MZ zzIhW}MtqK6ez^s4qXr3j5wl&+Q9wfG*q)9Zf`HLISc&9B{?dYcX!*0CbFqK-ZX1_?R+raCZ(m zj=mLlTz4_r`FOy=r5)Ot(s4A`1HCR7fomrWf@@|C>i)w zV*RchMD{%&ZXv;NtEIYpCYM9whQQe~9MOMKVeoX~a8LHirn&$}_QWH}Cjt>szVK}q zi3nd;GFV*nC}65Z$}QA^aa>G4i5V^oxIu zgqgF9yZNJAw;1$~=nns5+i=1r4E-nl6XSYE!@G)17~R92D6qkxxIT1S z=Yh~JQ3!G6oGdaU3B<}_5e!69#lQ&SwndQYj4FjNS|SdkEz&sI?XKhIS``^~Q% zD}=YP1RDzJ_V!NP?2;X6j@v}$a`J!owKPrY?CJ(5x*<@#q;OqL`?u8^{Q4%9gWJWu?d?WTCj}CY}t$&9gY>G||PH6F1s)F9bv*wx@;$ zr>jMvpiE%T)iXyHDhQ^r&PpPqxGfOw#fAfe9px5L4>6Ot?72u_qD-P(FtC3fyOK1l zoIf8QxQ@b0*Yrg=ExOmU%+d`@@YQFl5%R(-m=xp=a|Jgxxxr^oc1>(<39sis_YGPt z7$iEYScIx?-jz>j&Y6Nrvn zZB8J1wP*fU5z`rtW@^R}x@muso};iJz!?zZnYYSFDa0<-H8DM{_`m84q1HRk=(`NxognY!tK|ZH`{(&Eu1R-kh5>%WF-SXKPC&YikSPN1M66?gH z3RgJ6ccS+sY5B9HR)}uQd@4W7Jc&YjoqCN@r%}FC+qfJ)pBf}BYoXaveKoAU6v^9H z;=8YxU}Jm^swkX$b5`qe;iZ@|VGN=@$eJqK!>UJ8nQDjBt;>4SC%uw}I7=I(-D-vv zSn^(nilox-b@-jyz`uX@^EpExf3MF}kIE8m>d};t*+ef|Tv>B+b|l+o(E+m%#or4i ze@$<#1oGFwy_s51j{IswKRG=$q}5lK_{ewSVM|Q`4R5VCe+C4s1oCG<^*5HOGdn^k z1}oU8AkG>}<-Jjq_4dz)fR#Z0d>C76IENv?#Y=0jLcj`vmLPv%C6JaNV~w{$fDo_} zh!qX25NHJgRsv}SIM!EI2v`ZkiUU>%v;qMufwTe~>nke+tOR1k0V@Prfq<1jS^-&($_+*i?piu~kT|9=nCXE~N^3>MP=(}jN~Ge`|>BgyO$6&1y^%dQHz zQm6sU(-mfY|JOsn_*U}q#V|%0Jp&)5cV79nMvydhw11VAm4%Fq43$Q{y99anzXy?C z^;3zb=2dcS3-3-%`#(QhMCQ{q*&qZNFvMU;KtKS(!onI%PRaY0`rU*;B$1~lEp5<` zxSN~BwB~>R+-hrvvk3wvJeio2lhc3z@{I){GBY!A?AS5*`}v_mhYo6%F%U_mVJC!C zj5rp+XF02)6H!BaO1w3kTM%eGxXCwd{9P+6 zD-~NM7A_50Q+n4pjq0rokYr2rKs(4{NyYLcQ;F0eK1j^84=jF9>}Z}y>|-bc8&1Uv9xY(n(MFO!1L=k%jAEL*o@$_@NxN94NK4An5e;34m1GAovBY*5gMgITB#%Te zh@2%06@h_)NKQ^hadELC5P8=aUh-^&CIljdo?7s!&qhY;_1u7fd_Up68wZg$M0ht= zwdCEezcX=x*j|~IisR+=@Q8>&C@rw+9=v}@6ts*Ymg7z3r8xf6&q!(?i#|O%!iV<6 zXz~kobTU+znT7+KcA$LFF!T-ergI`8INEj0q-Dv&$52L#_)cQCi?mc-UWOVQA9U;- zh43JnL#3@S!*MEUg6-3Lpe)TWpKWzM()Vq_cH3AC?-2=ad)hT-I>U;mA{N2tMjd}Q z`Y7;__W}b665p7(8fE$Qc@Rl#6x2AO_5R#~KuaIo=!LvD(g?xG=xY4xi8ys4FVvOe z(6SE@)8%QbI+Cl5=$Sbq)Y5vMNsyFDZ0HK2@WZ)SdMp*nz$%Hr#8opvOuK?yBt7*S z))kb{cr0-iRIoRWkrnVtRrhVo5PTW1gX z!vFt5i{F)_tgtUaBoZVY-F4AqDUsb=j(uC`&cWt(yzqh@wr$;k?fnNJqN^KfX)%7; zym#^Onkx9lcwzo`KjH3Mo`(k|g0jS)@X-_WzhXnH_BI*#EXPbE;WU58%9+JXgLh)= z+m0sfeLOrl%hbS~eihy7o#Epj2tS$yHdkh2_YdFUmAT7d_Hsaekq0jR&%OBPa5?~@ zBczq{Uc;$_mS5Bld|YKiJX>R$bvC ztdHLSrwjj!X+w!*cioLWJ1@kzPO(V-VJ;s1-W$(-Gy{X3($H(m0@|3@P+63T{qJ6i zcLF}gHxG`7cj6lO-tru62-l&8?3KOPHnt`2PlT7Fg|9g?51LYcmjk;3$q_8b4~wLD0eDID9OVi0gp7{CpHu&}~p<9`@xQqsI}tth2SD>+Aza$}dvhi1W*{ zu&t6Vrdg55Co*aqbxXy@C~m`in%E|0oTI-#Ob4@&pI0j8^iiIbh$ECyT)2PX=xl?1 z3ArdMCxRE3B4JM!Dm6Q}ySl)qa19bOi&4WFusVOg0LS;{pqBm}O|oo8+l!D3000Gt zNklbLU7LJc5j<2l886GXnz)g0azM$p z?O1vHdi4AD1KfRK2w5R6XpsnP?z|lztP01&^pVp3{`WDnO{vu#JI(X>D~q29z${6EjM9~X9eQz(lBH8kI3!)6lV8{#PC~hz{GoI zA^gsMF#qx+=6AdfFP|SlHx^vd=8~MP_^N*(@%*o$!GVqdPO0p`4w3x>8zK?eb5vxP!D(1;^d8Xz zA+qr7uLLFhCz4y8HSD0L0Sq<>wBNu4^NLue2JJ9I%$?>rni%9XX~!MNqB zu^1LiH+N*`>L{R#zjtBlWMfo*X=#6H3Ldg)XoTi)U6~#geoS5pAd`}k(7k(irK~6g zHkZjL(0V<4At2vW_5(^wOL5@90p(3tR7)htciy&b8~XO`t90(fJ-30hDxWwE;%0-n znwq|~I_o1&iX3QRp3WEaeGm%Ax&dwOKM3*(f3J239cYD~EEA^*$!hdQY&l6 ziXu+JOw!m>7s{5~;^Ht>k}wgMV#(%FHc>iK?1RSTVdY?mmhK(sxQIxrHW3BswK{Pa zM8cx8AlXqDc}Dex8D`wM0J> zggjHO5L{9FCPY}-z!SpYKc#j;jz;n*@)A{(UrD>t5}_HLB`A5qG8+idnK&afE=MJ@{L#y_ zA*lG)iToeYJN;HxYUyz^go1nCcw4{G-?OoFXTYOS&P;V{u z87WUGTNRX3FDav(CNz;jM4-#f%~e1>O+M@Ea|i-* zf=*@(S$L6A)IdIwPxA8e)Tkd||l^;%TYxR{tPp z4C4PE2@Qmh-n4&&6#qYZdiq`%uxJeqO=S?p2<_N*~*2eX$YVe=b7y}N*RS7VSg{f2O{S|?n z^4|Jrg}~n$0w() to surround the name of an event. + Use the event syntax (eventName) to + make your application respond to user input. p. - For a particular control like an input you can have it call methods on your controller on keyup event like so: + You can specify the event handler—a method in the component controller—like this: pre.prettyprint.lang-html code. <input (keyup)="myControllerMethod()"> p. - As in previous examples, you can make element references available to other parts of the template as a local - variable using the # syntax. With this and events, we can do the old "update text as you type" example: + As in previous examples, you can make element references available to + other parts of the template as a local + variable using the # syntax. + Using # and events, + you can write the old "update text as you type" example: + pre.prettyprint.lang-html code. - <input #my-name (keyup)> - <p>{{my-name.value}}</p> + <input #myname (keyup)> + <p>{{myname.value}}</p> p.text-body(ng-non-bindable). - The #my-name creates a local variable in the template that we'll refer to below in the - <p> element. The (keyup) tells Angular to trigger updates when it gets a keyup - event. And the {{my-name.value}} binds the text node of the <p> element to the + In that example, #myname creates a local variable in the template that + the <p> element can refer to. + The (keyup) tells Angular to trigger updates when it gets a keyup + event. And {{myname.value}} binds the text node of the + <p> element to the input's value property. - p Let's do something a little more complex where users enter items and add them to a list like this: + + p. + Let's do something a little more complex, where the user enters items + that the app adds to a list: figure.image-display img(src='user-input-example1.png') .l-main-section - h2#section-create-an-array-property Create an array property + h2#section-create-an-array-property Create a list property p. - With the default bootstrapping in place, create a TodoController class that will manage interactions with the - list. Inside TodoController, add an array with an initial list of items. Then add a method that pushes new items - on the array when called. + With the default files in place, + create a TodoController class to manage interactions with the + list. Inside TodoController, add a list with some initial items. + Then add a method that adds new items + to the list. - pre.prettyprint.linenums.lang-dart + pre.prettyprint.lang-dart code. class TodoList { List<String> todos = @@ -42,21 +54,26 @@ addTodo(String todo) { todos.add(todo); - } + } + } .callout.is-helpful header Production Best Practice p. - As with the previous example, in a production application you will separate your model out into another class - and inject it into TodoController. We've omitted it here for brevity. + As shown in the previous example, a production application you would + separate the model out into another class + and inject it into TodoController. + We've omitted that here for brevity. + +

.l-main-section h2#section-display-the-list-of-todos Display the list of todos p. - Using the *for iterator, create an <li> for each item in the todos array and set + Using the *for iterator, create an <li> for each item in the todos list and set its text to the value. - pre.prettyprint.linenums.lang-html + pre.prettyprint.lang-html code. <ul> <li *for="#todo of todos"> @@ -74,64 +91,126 @@ code. <input #todotext> p. - Lastly, specify the target of the click event binding as your controller's addTodo() method and pass - it the value. Since you created a reference called todotext, you can get the value with - todotext.value. + Specify the target of the click event binding as your controller's + addTodo() method and pass + it the value. Since you created a reference called todotext, + you can get the value with todotext.value. pre.prettyprint.lang-html code. <button (click)="addTodo(todotext.value)">Add Todo</button> - p And then create the doneTyping() method on TodoList and handle adding the todo text. + p. + To make pressing Enter do something useful, + you can add a keyup event handler to the input field. + This event handler uses APIs defined in + dart:html, + so be sure to import that library. + + .code-box + pre.prettyprint.lang-dart(data-name="todo_list.dart") + code. + // In the template: + <input #todotext (keyup)="doneTyping(\$event)"> + + // In the component controller class: + doneTyping(KeyboardEvent event) { + if (event.keyCode == KeyCode.ENTER) { + InputElement e = event.target; + addTodo(e.value); + e.value = null; + } + } + pre.prettyprint.lang-dart(data-name="main.dart") + code. + library user_input; + + import 'dart:html'; + ... - pre.prettyprint.lang-dart - code. - doneTyping(KeyboardEvent event) { - if (event.which == 13) { - InputElement e = event.target; - addTodo(e.value); - e.value = null; - } - } .l-main-section - h2#section-final-code Final Code - p Here's the final todo_list.dart - pre.prettyprint.lang-dart - code. - part of user_input; + h2#section-final-code Final code - @Component( - selector: 'todo-list' - ) - @View( - // Without r before ''' (a raw string), $event breaks Angular! - // An alternative is to use \$event instead. - template: ''' - <ul> - <li *for="#todo of todos"> - {{ todo }} - </li> - </ul> + .code-box + pre.prettyprint.lang-dart(data-name="todo_list.dart") + code. + // web/todo_list.dart + part of user_input; - <input #todotext (keyup)="doneTyping($event)"> - <button (click)="addTodo(todotext.value)">Add Todo</button> - ''', - directives: const[For] - ) - class TodoList { - List<String> todos = - ['Eat breakfast', 'Walk dog', 'Breathe', 'Learn Angular']; + @Component( + selector: 'todo-list' + ) + @View( + // Without r before ''' (a raw string), $event breaks Angular. + // An alternative to a raw string is to use \$event instead. + template: r''' + <ul> + <li *for="#todo of todos"> + {{ todo }} + </li> + </ul> - addTodo(String todo) { - todos.add(todo); - } + <input #todotext (keyup)="doneTyping($event)"> + <button (click)="addTodo(todotext.value)">Add Todo</button> + ''', + directives: const[For] + ) + class TodoList { + List<String> todos = + ['Eat breakfast', 'Walk dog', 'Breathe', 'Learn Angular']; - doneTyping(KeyboardEvent event) { - if (event.which == 13) { - InputElement e = event.target; - addTodo(e.value); - e.value = null; - } - } - } \ No newline at end of file + addTodo(String todo) { + todos.add(todo); + } + + doneTyping(KeyboardEvent event) { + if (event.keyCode == KeyCode.ENTER) { + InputElement e = event.target; + addTodo(e.value); + e.value = null; + } + } + } + pre.prettyprint.lang-dart(data-name="main.dart") + code. + // web/main.dart + library user_input; + + import 'dart:html'; + + import 'package:angular2/angular2.dart'; + import 'package:angular2/src/reflection/reflection.dart' show reflector; + import 'package:angular2/src/reflection/reflection_capabilities.dart' show ReflectionCapabilities; + + part 'todo_list.dart'; + + main() { + reflector.reflectionCapabilities = new ReflectionCapabilities(); + bootstrap(TodoList); + } + pre.prettyprint.lang-html(data-name="html") + code. + <!-- web/index.html --> + <!DOCTYPE html> + <html> + <head> + <link rel="stylesheet" href="style.css"> + </head> + <body> + + <todo-list></todo-list> + + <script type="application/dart" src="main.dart"></script> + <script src="packages/browser/dart.js"></script> + </body> + </html> + pre.prettyprint.lang-yaml(data-name="yaml") + code. + # pubspec.yaml + name: user_input + description: Dart version of Angular 2 example, Responding to User Input + version: 0.0.1 + dependencies: + angular2: 2.0.0-alpha.20 + browser: any diff --git a/public/docs/js/latest/api/index.jade b/public/docs/js/latest/api/index.jade index 9b23b0e015..948962aea2 100644 --- a/public/docs/js/latest/api/index.jade +++ b/public/docs/js/latest/api/index.jade @@ -4,7 +4,7 @@ header Developer Preview p. The Angular 2.0 API is currently in active development and not production ready. - This page will showcase a preview of proposed methods to help further the discussion + This page showcases a preview of proposed methods to help further the discussion in the development community. If you're building a production app today, please use Angular 1.X.