- $animate:
- ensure the final closing timeout respects staggering animations (ed53100a)
- prevent race conditions for class-based animations when animating on the same CSS class (4aa9df7a, #5588)
- correctly detect and handle CSS transition changes during class addition and removal (7d5d62da)
- avoid accidentally matching substrings when resolving the presence of className tokens (524650a4)
- $http: ensure default headers PUT and POST are different objects (e1cfb195, #5742, #5747, #5764)
- $rootScope: prevent infinite $digest by checking if asyncQueue is empty when decrementing ttl (2cd09c9f, #2622)
- $animate:
-
$http: due to e1cfb195, it is now necessary to seperately specify default HTTP headers for PUT, POST and PATCH requests, as these no longer share a single object.
To migrate your code, follow the example below:
Before:
// Will apply to POST, PUT and PATCH methods $httpProvider.defaults.headers.post = { "X-MY-CSRF-HEADER": "..." };
After:
// POST, PUT and PATCH default headers must be specified seperately, // as they do not share data. $httpProvider.defaults.headers.post = $httpProvider.defaults.headers.put = $httpProviders.defaults.headers.patch = { "X-MY-CSRF-HEADER": "..." };
- $parse: do not use locals to resolve object properties (f09b6aa5, #5838, #5862)
- a: don't call preventDefault on click when a SVGAElement has an xlink:href attribute (e0209169, #5896, #5897)
- input: use Chromium's email validation regexp (79e519fe, #5899, #5924)
- ngRoute: pipe preceding route param no longer masks ? or * operator (fd6bac7d, #5920)
- $compile: retain CSS classes added in cloneAttachFn on asynchronous directives (5ed721b9, #5439, #5617)
- $http: update httpBackend to use ActiveXObject on IE8 if necessary (ef210e5e, #5677, #5679)
- $q: make $q.reject support
finally
andcatch
(074b0675, #6048, #6076) - filterFilter: don't interpret dots in predicate object fields as paths (339a1658, #6005, #6009)
- mocks: refactor currentSpec to work w/ Jasmine 2 (95f0bf9b, #5662)
- ngResource: don't append number to '$' in url param value when encoding URI (ce1f1f97, #6003, #6004)
- $compile: retain CSS classes added in cloneAttachFn on asynchronous directives (5ed721b9, #5439, #5617)
- $http:
- $locale: minor grammar amends for the locale
locale_lt
(95be253f, #6164) - $q: make $q.reject support
finally
andcatch
(074b0675, #6048, #6076) - docs: clarify doc for "args" in $broadcast and $emit (caed2dfe, #6047)
- filterFilter: don't interpret dots in predicate object fields as paths (339a1658, #6005, #6009)
- http: make jshint happy (6609e3da)
- jqLite: trim HTML string in jqLite constructor (36d37c0e, #6053)
- mocks:
- rename mock.animate to ngAnimateMock and ensure it contains all test helper code for ngAnimate (4224cd51, #5822, #5917)
- remove usage of $animate.flushNext in favour of queing (906fdad0)
- always call functions injected with
inject
withthis
set to the current spec (3bf43903, #6102) - refactor currentSpec to work w/ Jasmine 2 (95f0bf9b, #5662)
- ngMock: return false from mock $interval.cancel() when no argument is supplied (dd24c783, #6103)
- ngResource:
The animation mock module has been renamed from mock.animate
to ngAnimateMock
. In addition to the rename, animations will not block within test code even when ngAnimateMock is used. However, all function calls to $animate will be recorded into $animate.queue
and are available within test code to assert animation calls. In addition, $animate.triggerReflow()
is now only available when ngAnimateMock
is used.
-
$animate:
-
due to 4f84f6b3, ngClass and {{ class }} will now call the
setClass
animation callback instead of addClass / removeClass when both a addClass/removeClass operation is being executed on the element during the animation.Please include the setClass animation callback as well as addClass and removeClass within your JS animations to work with ngClass and {{ class }} directives.
-
due to cf5e463a, Both the
$animate:before
and$animate:after
DOM events must be now registered prior to the $animate operation taking place. The$animate:close
event can be registered anytime afterwards.DOM callbacks used to fired for each and every animation operation that occurs within the $animate service provided in the ngAnimate module. This may end up slowing down an application if 100s of elements are being inserted into the page. Therefore after this change callbacks are only fired if registered on the element being animated.
-
-
input:
-
due to a9fcb0d0, input[type=file] will no longer support ngModel. Due to browser support being spotty among target browsers, file inputs cannot be cleanly supported, and even features which technically do work (such as ng-change) work in an inconsistent way depending on the attributes of the form control.
As a workaround, one can manually listen for change events on file inputs and handle them manually.
-
- $animate:
- delegate down to addClass/removeClass if setClass is not found (18c41af0, #6463)
- ensure all comment nodes are removed during a leave animation (f4f1f43d, #6403)
- only block keyframes if a stagger is set to occur (e71e7b6c, #4225)
- ensure that animateable directives cancel expired leave animations (e9881991, #5886)
- ensure all animated elements are taken care of during the closing timeout (99720fb5, #6395)
- fix for TypeError Cannot call method 'querySelectorAll' in cancelChildAnimations (c914cd99, #6205)
- $http:
- $parse: reduce false-positives in isElement tests (5fe1f39f, #4805, #5675)
- input: use ValidityState to determine validity (c2d447e3, #4293, #2144, #4857, #5120, #4945, #5500, #5944)
- isElement: reduce false-positives in isElement tests (75515852)
- jqLite:
- numberFilter: convert all non-finite/non-numbers/non-numeric strings to the empty string (cceb455f, #6188, #6261)
- $parse: support trailing commas in object & array literals (6b049c74)
- ngHref: bind ng-href to xlink:href for SVGAElement (2bce71e9, #5904)
- $$RAFProvider: check for webkitCancelRequestAnimationFrame (e84da228, #6526)
- $$rAF: always fallback to a $timeout incase native rAF isn't supported (ee8e4a94, #6654)
- $compile: support templates with thead and tfoot root elements (ca0ac649, #6289)
- $http:
- $rootScope:
- angular.bootstrap: only allow angular to load once (0d60f8d3, #5863, #5587)
- jqLite: traverse
host
property for DocumentFragment in inheritedData() (98d825e1, #6637) - ngAnimate: setting classNameFilter disables animation inside ng-if (a41a2a1d, #6539)
- ngCookie: convert non-string values to string (93d1c95c, #6151, #6220)
- ngTouch: update workaround for desktop Webkit quirk (01a34f51, #6302)
- orderBy: support string predicates containing non-ident characters (10d3e1e4, #6143, #6144)
- select: avoid checking option element selected properties in render (dc149de9, #2448, #5994, #6769)
- $animate:
- $parse: mark constant unary minus expressions as constant (6e420ff2, #6932)
- Scope:
- filter.ngdoc: Check if "input" variable is defined (a275d539, #6819)
- input: don't perform HTML5 validation on updated model-value (b2363e31, #6796, #6806)
- ngClass: handle ngClassOdd/Even affecting the same classes (55fe6d63, #5271)
- $animate:
- $compile:
- do not merge attrs that are the same for replace directives (b635903e, #7463)
- pass
transcludeFn
down to nested transclude directives (11385060, #7240, #7387) - set
$isolateScope
correctly for sync template directives (5319621a, #6942) - reference correct directive name in
ctreq
error (6bea0591, #7062, #7067) - fix regression which affected old jQuery releases (a97a172e)
- $httpBackend: don't error when JSONP callback is called with no parameter (a7ccb753, #7031)
- $location:
- angular.copy: support circular references in the value being copied (5c997209, #7618)
- grunt-utils: ensure special inline CSS works when
angular
is not a global (d4231171, #7176) - input:
- jqLite: use jQuery only if
jQuery.fn.on
is present (fafcd628) - limitTo: do not convert
Infinity
toNaN
(fcdac65a, #6771, #7118) - ngAnimate:
$animate
methods should accept native DOM elements (9227a5db) - ngClass:
- ngLocale: fix i18n code-generation to support
get_vf_
,decimals_
, andget_wt_
(96a31476) - ngSanitize: encode surrogate pair properly (3d0b49c0, #5088, #6911)
- ngSwitch: properly support case labels with different numbers of transclude fns (32aa4915)
- numberFilter: fix rounding error edge case (0388eed7, #7453, #7478)
- $interpolate: optimize value stringification (9d4fa33e, #7501)
- scope: 10x. Share the child scope class. (9ab9bf6b)
- $compile:
- ensure transclude works at root of templateUrl (fd420c40, #7183, #7772)
- bound transclusion to correct scope (1382d4e8)
- don't pass transcludes to non-transclude templateUrl directives (b9ddef2a)
- don't pass transclude to template of non-transclude directive (eafba9e2)
- fix nested isolated transclude directives (bb931097, #1809, #7499)
- pass transcludeFn down to nested transclude directives (8df5f325, #7240, #7387)
- $injector: report circularity in circular dependency error message (14e797c1, #7500)
- ngResource: don't convert literal values into Resource objects when isArray is true (f0904cf1, #6314, #7741)
- $compile: move ng-binding class stamping for interpolation into compile phase (81b7e5ab)
- $http: move xsrf cookie check to after cache check in $http (8b86d363, #7717)
- isArray: use native Array.isArray (6c14fb1e)
- jqLite: cache collection length for all methods that work on a single element (6d418ef5)
- ngBind: set the ng-binding class during compilation instead of linking (1b189027)
- $compile: bind ng-attr-* even if unbound attribute follows ng-attr-* (ed59370d)
- $http: should not read statusText on IE<10 when request is aborted (0c80df21)
- $injector: check if a fn is an array explicitly (67c11b9a, #7904, #2653)
- $interval: when canceling, use clearInterval from $window instead of global scope. (f780ccfa)
- $parse:
- make the window check in ensureSafeObject IE8 friendly (ba62e975)
- prevent invocation of Function's bind, call and apply (07fa87a8)
- forbid proto properties in angular expressions (cb713e60)
- forbid {define,lookup}{Getter,Setter} properties (89ca8597)
- forbid referencing Object in angular expressions (bc6fb7cc)
- injector: allow multiple loading of function modules (d71f16e7, #7255)
- input:
- jqLite: change expando property to a more unique name (74e1cc68)
- numberFilter: correctly round fractions despite floating-point arithmetics issues in JS (e5f454c8, #7870, #7878)
- testabilityPatch: fix invocations of angular.mock.dump (5e944a1c)
- jqLite: don't use reflection to access expandoId (a4faa5cd)
- $parse:
- due to 07fa87a8,
You can no longer invoke .bind, .call or .apply on a function in angular expressions. This is to disallow changing the behaviour of existing functions in an unforseen fashion.
- due to cb713e60,
The (deprecated) proto propery does not work inside angular expressions anymore.
- due to 89ca8597,
This prevents the use of {define,lookup}{Getter,Setter} inside angular expressions. If you really need them for some reason, please wrap/bind them to make them less dangerous, then make them available through the scope object.
- due to bc6fb7cc,
This prevents the use of Object
inside angular expressions.
If you need Object.keys, make it accessible in the scope.
- $http:
- $location: remove query args when passed in object (a26acb64, #6565)
- input:
- parseKeyValue: ignore properties in prototype chain (873acf8f, #8070, #8068)
- ngAnimate: conditionally allow child animations to run in parallel with parent animations (931789ec, #7946)
- $http: fix double-quoted date issue when encoding params (2f960f15, #8150, #6128, #8154)
- $location: handle plus character in query strings (60af504c, #3042)
- $rootScope: $watchCollection should handle NaN in objects (bf13d268, #7930)
- angular.copy: clone regexp flags correctly (e25ed0d4, #5781, #8337)
- csp: fix autodetection of CSP + better docs (0e5d3190, #8162, #8191)
- docs: change plnkr form to open in same window (5d11e020)
- jqLite: triggerHandler support unbind self (209e6000, #5984)
- ngHref: remove attribute when empty value instead of ignoring (948c86c6, #2755)
- ngRoute: remove unnecessary call to decodeURIComponent (1b779028, #6326, #6327)
- ngSanitize:
- orderBy: correctly order by date values (f1b28847, #6675, #6746)
- select: force visual update in IE (c0afbfac, #7692, #8158)
- $compile: only create jqLite object when necessary (71eb1901)
- $parse: don't use reflective calls in generated functions (cbdf0c2a)
- forEach: use native for loop instead of forEach for Arrays (492b0cdf)
- jqLite: expose the low-level jqLite.data/removeData calls (3c46c943)
- ngBindHtml: move addClass to the compile phase (8eede099, #8261)
- $compile: make '='-bindings NaN-aware (0b0acb03, #8553, #8554)
- $parse: correctly assign expressions who's path is undefined and that use brackets notation (60366c8d, #8039)
- jqLite: allow
triggerHandler()
to accept custom event (d262378b, #8469, #8505) - ngSanitize: ensure
html
is a string in htmlParser() (9ee07551, #8417, #8416) - select:
- $parse: allow for assignments in ternary operator branches (93b0c2d8, #8512, #8484)
- http: allow caching for JSONP requests (eab5731a, #1947, #8356)
- $location:
- $sanitize: sanitize javascript urls with comments (4f387050, #8274)
- Angular: make Date comparison in equals() NaN-aware (98f60372, #8650, #8715)
- copy: clear array destinations correctly for non-array sources (888b0f54, #8610, #8702)
- input:
- linky: handle quotes around email addresses (effc98fd, #8520)
- minErr: encode btstrpd error input to strip angle brackets (aaf9c5e5, #8683)
- ngHref: remove attribute when empty value instead of ignoring (ed56872b, #2755)
- input: due to ebece0bc,
Previously, input[type=password]
would trim values by default, and would require an explicit ng-trim="false"
to disable the trimming behaviour. After this CL, ng-trim
no longer affects input[type=password]
, and will
never trim the password value.
Closes #8250 Closes #8230
- $browser: detect changes to the browser url that happened in sync (2ece4d03, #6976)
- $compile:
- $location:
- $parse: disallow passing Function to Array.sort (b39e1d47)
- form: ensure concurrent animations use setClass (d7548fdf, #8166)
- input: check
scope.$$phase
only on$rootScope
(36e6de1d) - ngEventDirs:
- ngRepeat: improve errors for duplicate items (1812af58)
- numberFilter: format numbers that round to zero as nonnegative (7e02fa07, #8489)
- orderBy: allow arrayLike objects to be ordered (94b0f2d3, #8944)
- ngEventDirs: due to 54f0bc0f,
The blur
and focus
event fire synchronously, also during DOM operations
that remove elements. This lead to errors as the Angular model was not
in a consistent state. See this fiddle for a demo.
This change executes the expression of those events using
scope.$evalAsync
if an $apply
is in progress, otherwise
keeps the old behavior.
Fixes #4979 Fixes #5945 Closes #8803 Closes #6910 Closes #5402
- i18n: fix typo at i18n generation code (1b6d74cc)
- ngLocale: Regenerate Locale Files (06c76694)
- select: update option labels when model changes (d89d59f4, #9025)
- $animate: clear the GCS cache even when no animation is detected (f619d032, #8813)
- $browser:
- $http: add missing shortcut methods and missing docs (ec4fe1bc, #9180, #9321)
- $location:
- $parse: add quick check for Function constructor in fast path (756640f5)
- $parse, events: prevent accidental misuse of properties on $event (4d0614fd, #9969)
- ngMock: $httpBackend should match data containing Date objects correctly (1426b029, #5127)
- orderBy: sort by identity if no predicate is given (45b896a1, #5847, #4579, #9403)
- select: ensure the label attribute is updated in Internet Explorer (16833d0f, #9621, #10042)