<p style="text-align: center;"><strong><img alt="" src="https://simg.open-open.com/show/42418ea2d6d88684f367b335027dbbf3.png" /></strong></p> <p> </p> <p>AngularJS是一款开源的JavaScript MV*(MVW、MVVM、MVC)框架,目前由Google维护。AngularJS弥补了HTML在构建应用方面的不足,其通过使用标识符(directives)结构,来扩展Web应用中的HTML词汇,使开发者可以使用HTML来声明动态内容,从而使得Web开发和测试工作变得更加容易。AngularJS最初由Miško Hevery和Adam Abrons于2009年开发,后来成为了Google公司的项目。</p> <p> </p> <h2>更新日志</h2> <h3>Bug 修复</h3> <ul> <li><strong>input:</strong> fix <code>step</code> validation for <code>input[type=number]</code>/<code>input[type=range]</code> (<a href="/misc/goto?guid=4958994630380272671">081d06</a> <a href="/misc/goto?guid=4958994630475516741">#15257</a>)</li> <li><strong>jqLite:</strong> <ul> <li>camelCase keys in <code>jqLite#data</code> (<a href="/misc/goto?guid=4958994630570090807">fc0c11</a> <a href="/misc/goto?guid=4958994630663853413">#15126</a>)</li> <li>align jqLite camelCasing logic with JQuery (<a href="/misc/goto?guid=4958994630759312860">73050c</a> <a href="/misc/goto?guid=4958994630846754003">#7744</a>)</li> </ul> </li> <li><strong>$parse:</strong> <ul> <li>treat falsy values as defined in assignment expressions (<a href="/misc/goto?guid=4958994630937003190">4f44e0</a>)</li> <li>call once stable bind-once expressions with filter (<a href="/misc/goto?guid=4958994631034779468">3b5751</a>)</li> <li>Handle sign of <code>-undefined</code> consistently (<a href="/misc/goto?guid=4958994631122567146">c1eaf3</a>)</li> </ul> </li> <li><strong>ngModel:</strong> treat synchronous validators as boolean always (<a href="/misc/goto?guid=4958994631228579034">7bc71a</a> <a href="/misc/goto?guid=4958994631319963379">#14734</a>)</li> <li><strong>$q:</strong> treat thrown errors as regular rejections (<a href="/misc/goto?guid=4958994631409638969">e13eea</a> <a href="/misc/goto?guid=4958994631501876414">#3174</a> <a href="/misc/goto?guid=4958994631594545099">#15213</a>)</li> <li><strong>ngTransclude:</strong> use fallback content if only whitespace is provided (<a href="/misc/goto?guid=4958994631685371350">32aa7e</a> <a href="/misc/goto?guid=4958994631778461041">#15077</a>)</li> <li><strong>$compile:</strong> <ul> <li>don't throw tplrt error when there is a whitespace around a top-level comment (<a href="/misc/goto?guid=4958994631880150557">76d3da</a> <a href="/misc/goto?guid=4958994631968214723">#15108</a>)</li> <li>disallow linking the same element more than once (<a href="/misc/goto?guid=4958994632064146415">1e1fbc</a>)</li> <li>lower the $sce context for src on video, audio, and track. (<a href="/misc/goto?guid=4958994632156079598">ad9a99</a>)</li> <li>correctly merge consecutive text nodes on IE11 (<a href="/misc/goto?guid=4958994632250466743">13c252</a> <a href="/misc/goto?guid=4958994632338887458">#14924</a>)</li> <li>secure <code>link[href]</code> as a <code>RESOURCE_URL</code>s in <code>$sce</code>. (<a href="/misc/goto?guid=4958994632443529826">04cad4</a> <a href="/misc/goto?guid=4958992359459581348">#14687</a>)</li> <li>don't add leading white-space in attributes for a specific merge case (<a href="/misc/goto?guid=4958994632560540276">305ba1</a>)</li> <li>don't trim white-space in attributes (<a href="/misc/goto?guid=4958994632651078702">97bbf8</a> <a href="/misc/goto?guid=4958994632746217443">#5513</a> <a href="/misc/goto?guid=4958994632839920303">#5597</a>)</li> <li>move check for interpolation of on-event attributes to compile time (<a href="/misc/goto?guid=4958994632940221671">b89c21</a> <a href="/misc/goto?guid=4958994633028902942">#13267</a>)</li> </ul> </li> <li><strong>select:</strong> <ul> <li>add/remove selected attribute for selected/unselected options (<a href="/misc/goto?guid=4958994633124876974">c75698</a>)</li> <li>don't register options when select has no ngModel (<a href="/misc/goto?guid=4958994633211498969">e8c2e1</a>)</li> <li>handle model updates when options are manipulated (<a href="/misc/goto?guid=4958994633308241257">47c15f</a>)</li> <li>remove workaround for Chrome bug (<a href="/misc/goto?guid=4958994633410410761">87eff2</a>)</li> </ul> </li> <li><strong>select, ngOptions:</strong> make the handling of unknown / empty options consistent (<a href="/misc/goto?guid=4958994633499358494">2785ad</a>)</li> <li><strong>ngValue:</strong> set the element's value property in addition to the value attribute (<a href="/misc/goto?guid=4958994633593635622">e6afca</a> <a href="/misc/goto?guid=4958994633691056189">#14031</a>)</li> <li><strong>aria/ngModel:</strong> do not overwrite the default <code>$isEmpty()</code> method for checkboxes (<a href="/misc/goto?guid=4958994633781053161">975a61</a> <a href="/misc/goto?guid=4958994633875409145">#14621</a>)</li> <li><strong>$resource:</strong> <ul> <li>fulfill promise with the correct value on error (<a href="/misc/goto?guid=4958994633970548920">5f6949</a> <a href="/misc/goto?guid=4958994634061888138">#14837</a>)</li> <li>pass all extra, owned properties as params (<a href="/misc/goto?guid=4958994634150022133">acb545</a> <a href="/misc/goto?guid=4958994634251481861">#14866</a>)</li> <li>add semicolon to whitelist of delimiters to unencode in URL params (<a href="/misc/goto?guid=4958994634343453829">2456ab</a>)</li> </ul> </li> <li><strong>$http:</strong> <ul> <li>avoid <code>Possibly Unhandled Rejection</code> error when the request fails (<a href="/misc/goto?guid=4958994634442129571">47583d</a> <a href="/misc/goto?guid=4958994634534375861">#13869</a>)</li> <li>properly increment/decrement <code>$browser.outstandingRequestCount</code> (<a href="/misc/goto?guid=4958994634633468069">4f6f2b</a> <a href="/misc/goto?guid=4958994634726716471">#13782</a> <a href="/misc/goto?guid=4958994634814188287">#14921</a>)</li> </ul> </li> <li><strong>ngMock:</strong> trigger digest in <code>$httpBackend.verifyNoOutstandingRequest()</code> (<a href="/misc/goto?guid=4958994634904706289">267ee9</a> <a href="/misc/goto?guid=4958994635004184587">#13506</a>)</li> <li><strong>ngAria:</strong> <ul> <li>bind to <code>keydown</code> instead of <code>keypress</code> in <code>ngClick</code> (<a href="/misc/goto?guid=4958994635095765578">ad41ba</a> <a href="/misc/goto?guid=4958994635181286849">#14063</a>)</li> <li>don't add roles to native control elements (<a href="/misc/goto?guid=4958994635287354571">9978de</a> <a href="/misc/goto?guid=4958994635374374034">#14076</a>)</li> </ul> </li> <li><strong>ngBind:</strong> use same string representation as <code>$interpolate</code> (<a href="/misc/goto?guid=4958994635472078660">fa80a6</a>)</li> <li><strong>ngMock/$httpBackend:</strong> fail if a url is provided but is <code>undefined</code> (<a href="/misc/goto?guid=4958994635558890647">7551b8</a> <a href="/misc/goto?guid=4958994635657082756">#8442</a> <a href="/misc/goto?guid=4958994635749022524">#10934</a>)</li> <li><strong>$route:</strong> don't process route change controllers and templates for <code>redirectTo</code> routes (<a href="/misc/goto?guid=4958994635834923357">7f4b35</a> <a href="/misc/goto?guid=4958994635965681988">#3332</a>)</li> <li><strong>loader:</strong> <code>module.decorator</code> order of operations is now irrelevant (<a href="/misc/goto?guid=4958994636062218944">6a2ebd</a> <a href="/misc/goto?guid=4958994636181181439">#12382</a>)</li> <li><strong>ngAnimate:</strong> make svg elements work with <code>classNameFilter</code> (<a href="/misc/goto?guid=4958994636303851823">81bf7e</a>)</li> </ul> <h3>新功能</h3> <ul> <li><strong>jqLite:</strong> <ul> <li>implement <code>jqLite(f)</code> as alias to <code>jqLite(document).ready(f)</code> (<a href="/misc/goto?guid=4958994636403744480">369fb7</a>)</li> <li>don't throw for elements with missing <code>getAttribute</code> (<a href="/misc/goto?guid=4958994636500561829">4e6c14</a>)</li> <li>don't remove a boolean attribute for <code>.attr(attrName, '')</code> (<a href="/misc/goto?guid=4958994636630466498">3faf45</a>)</li> <li>remove the attribute for <code>.attr(attribute, null)</code> (<a href="/misc/goto?guid=4958994636760900039">4e3624</a>)</li> <li>return <code>[]</code> for <code>.val()</code> on <code><select multiple></code> with no selection (<a href="/misc/goto?guid=4958994636891658712">d882fd</a>)</li> </ul> </li> <li><strong>$http:</strong> <ul> <li>remove deprecated callback methods: <code>success()/error()</code> (<a href="/misc/goto?guid=4958994637002580346">b54a39</a>)</li> <li>JSONP callback must be specified by <code>jsonpCallbackParam</code> config (<a href="/misc/goto?guid=4958994637132567671">fb6634</a> <a href="/misc/goto?guid=4958994637250684200">#15161</a> <a href="/misc/goto?guid=4958994637385504920">#11352</a>)</li> <li>JSONP requests now require a trusted resource URL (<a href="/misc/goto?guid=4958994637506087123">6476af</a> <a href="/misc/goto?guid=4958994637385504920">#11352</a>)</li> </ul> </li> <li><strong>ngModelOptions:</strong> allow options to be inherited from ancestor <code>ngModelOptions</code> (<a href="/misc/goto?guid=4958994637651509457">87a2ff</a> <a href="/misc/goto?guid=4958994637783484216">#10922</a>)</li> <li><strong>input:</strong> add support for binding to <code>input[type=range]</code> (<a href="/misc/goto?guid=4958994637911404290">913016</a> <a href="/misc/goto?guid=4958994638024899814">#5892</a> <a href="/misc/goto?guid=4958994638152234407">#14870</a>)</li> <li><strong>ngRoute:</strong> allow <code>ngView</code> to be included in an asynchronously loaded template (<a href="/misc/goto?guid=4958994638276328928">c13c66</a> <a href="/misc/goto?guid=4958994638408529150">#1213</a>)</li> <li><strong>select:</strong> support values of any type added with <code>ngValue</code> (<a href="/misc/goto?guid=4958994638530357534">f02b70</a> <a href="/misc/goto?guid=4958994638646777953">#9842</a>)</li> <li><strong>$interpolate:</strong> use custom <code>toString()</code> function if present (<a href="/misc/goto?guid=4958994638773109682">a5fd2e</a> <a href="/misc/goto?guid=4958994638894741963">#7317</a> <a href="/misc/goto?guid=4958994639009444264">#11406</a>)</li> <li><strong>$route:</strong> implement <code>resolveRedirectTo</code> (<a href="/misc/goto?guid=4958994639145299486">e98656</a> <a href="/misc/goto?guid=4958994639269814511">#5150</a>)</li> <li><strong>input[type=radio]:</strong> allow <code>ngTrim</code> to work for <code>input[type=radio]</code> (<a href="/misc/goto?guid=4958994639393896599">47724b</a>)</li> <li><strong>$q:</strong> report promises with non rejection callback (<a href="/misc/goto?guid=4958994639510673750">c9dffd</a> <a href="/misc/goto?guid=4958994639648064314">#13653</a> <a href="/misc/goto?guid=4958994639770671655">#7992</a>)</li> <li><strong>$location:</strong> default hashPrefix to <code>'!'</code> (<a href="/misc/goto?guid=4958994639901236510">aa077e</a> <a href="/misc/goto?guid=4958994640016699019">#13812</a>)</li> </ul> <h3>性能改进</h3> <ul> <li><strong>form, ngModel:</strong> change controllers to use prototype methods (<a href="/misc/goto?guid=4958994640146192952">9e24e7</a>)</li> <li><strong>select:</strong> don't prepend unknown option if already prepended (<a href="/misc/goto?guid=4958994640257302936">ba36bd</a>)</li> <li><strong>$animate:</strong> listen for document visibility changes (<a href="/misc/goto?guid=4958994640377434255">d71dc2</a>)</li> <li><strong>injector:</strong> cache the results of the native class detection check (<a href="/misc/goto?guid=4958994640492408708">5ceb5d</a>)</li> <li><strong>$parse:</strong> Inline constants (<a href="/misc/goto?guid=4958994640626433090">bd7d5f</a>)</li> <li><strong>$compile:</strong> use strict comparison for <code>controller === '@'</code> (<a href="/misc/goto?guid=4958994640743189918">bbd3db</a>)</li> <li><strong>$parse:</strong> remove Angular expression sandbox (<a href="/misc/goto?guid=4958994640873986293">1547c7</a> <a href="/misc/goto?guid=4958994640997638622">#15094</a>)</li> </ul> <p> </p> <h2>下载</h2> <ul> <li><a href="/misc/goto?guid=4958994641129330311" rel="nofollow"><strong>Source code</strong> (zip)</a></li> <li><a href="/misc/goto?guid=4958994641258465956" rel="nofollow"><strong>Source code</strong> (tar.gz)</a></li> </ul> <p>本站原创,转载时保留以下信息:<br /> 本文转自:深度开源(open-open.com)<br /> 原文地址:<a href="http://www.open-open.com/news/view/66270511">http://www.open-open.com/news/view/66270511</a></p>