Skip to content

Commit 202aed7

Browse files
committed
docs(changelog): release notes for 1.3.0-RC.0 sonic-boltification
1 parent 271572c commit 202aed7

File tree

1 file changed

+321
-0
lines changed

1 file changed

+321
-0
lines changed

CHANGELOG.md

+321
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,324 @@
1+
<a name="1.3.0-RC.0"></a>
2+
# 1.3.0-RC.0 sonic-boltification (2014-08-29)
3+
4+
5+
## Bug Fixes
6+
7+
- **$animate:**
8+
- wait two until two digests are over until enabling animations
9+
([92576743](https://github.com/angular/angular.js/commit/92576743eec0cef5ffdd701b83f72a61e6489c3b),
10+
[#8844](https://github.com/angular/angular.js/issues/8844))
11+
- ensure guarded animations consider AJAX requests upon bootstrap
12+
([4bca4c44](https://github.com/angular/angular.js/commit/4bca4c44b95a7435722605a750804043f2960160),
13+
[#8275](https://github.com/angular/angular.js/issues/8275), [#5262](https://github.com/angular/angular.js/issues/5262))
14+
- use $timeout to handle the delay within staggering animations
15+
([23da6140](https://github.com/angular/angular.js/commit/23da614043fe5dcf0be132b86466eecb11c766a2),
16+
[#7228](https://github.com/angular/angular.js/issues/7228), [#7547](https://github.com/angular/angular.js/issues/7547), [#8297](https://github.com/angular/angular.js/issues/8297), [#8547](https://github.com/angular/angular.js/issues/8547))
17+
- **$browser:** detect changes to the browser url that happened in sync
18+
([3be00df4](https://github.com/angular/angular.js/commit/3be00df495f6eed3b3d9587ebab1fdd633e94e08),
19+
[#6976](https://github.com/angular/angular.js/issues/6976))
20+
- **$compile:** use the correct namespace for transcluded svg elements
21+
([cb73a37c](https://github.com/angular/angular.js/commit/cb73a37c7cae5cdebadf7b3ddd44c5a452495e4e),
22+
[#8808](https://github.com/angular/angular.js/issues/8808), [#8816](https://github.com/angular/angular.js/issues/8816))
23+
- **$location:** always resolve relative links in html5mode to `<base>` url
24+
([22948807](https://github.com/angular/angular.js/commit/22948807e324eb0b182b15b31045dc306a9f3231),
25+
[#8492](https://github.com/angular/angular.js/issues/8492), [#8172](https://github.com/angular/angular.js/issues/8172))
26+
- **$parse:** properly handle dots at the end of identifiers
27+
([8ac90357](https://github.com/angular/angular.js/commit/8ac90357a66ae0c62dbfe6db2c6eaf1d600ecc65),
28+
[#4613](https://github.com/angular/angular.js/issues/4613), [#4912](https://github.com/angular/angular.js/issues/4912), [#8559](https://github.com/angular/angular.js/issues/8559))
29+
- **Angular:** remove duplicate nodeName_ references
30+
([a4520a74](https://github.com/angular/angular.js/commit/a4520a745d917c77f1d12cdbce48272c643f7255))
31+
- **currencyFilter:** pass through null and undefined values
32+
([c2aaddbe](https://github.com/angular/angular.js/commit/c2aaddbe4b21348aab8c13a78cdd6aaee846ae4e),
33+
[#8605](https://github.com/angular/angular.js/issues/8605))
34+
- **docs:** don't throw exception on the 404 page
35+
([550ba01b](https://github.com/angular/angular.js/commit/550ba01b325fc29460030fc9c24fa00269dec2a9),
36+
[#8518](https://github.com/angular/angular.js/issues/8518))
37+
- **input:**
38+
- validate minlength/maxlength for non-string values
39+
([77ce5b89](https://github.com/angular/angular.js/commit/77ce5b89f97aa83c3eb1fe2e19375ef00a822015),
40+
[#7967](https://github.com/angular/angular.js/issues/7967), [#8811](https://github.com/angular/angular.js/issues/8811))
41+
- allow to use seconds in `input[time]` and `input[datetime-local]`
42+
([5f90340a](https://github.com/angular/angular.js/commit/5f90340abb78aa08dde4876328bcc00e46232e46))
43+
- use year 1970 instead of 1900 for `input[time]`
44+
([29f0b568](https://github.com/angular/angular.js/commit/29f0b568debab7810752969d363d337099e96cdc))
45+
- **ngBindHtml:** throw error if interpolation is used in expression
46+
([cd21602d](https://github.com/angular/angular.js/commit/cd21602d5b1650d8be373618cb7320d697e32c4d),
47+
[#8824](https://github.com/angular/angular.js/issues/8824))
48+
- **ngEventDirs:** execute `blur` and `focus` expression using `scope.$evalAsync`
49+
([719c747c](https://github.com/angular/angular.js/commit/719c747cd892ee933e7e414a7dc97e657b88317d),
50+
[#4979](https://github.com/angular/angular.js/issues/4979), [#5945](https://github.com/angular/angular.js/issues/5945), [#8803](https://github.com/angular/angular.js/issues/8803), [#6910](https://github.com/angular/angular.js/issues/6910), [#5402](https://github.com/angular/angular.js/issues/5402))
51+
- **ngModel:**
52+
- always format the viewValue as a string for text, url and email types
53+
([1eda1836](https://github.com/angular/angular.js/commit/1eda18365a348c9597aafba9d195d345e4f13d1e))
54+
- allow non-assignable binding when getterSetter is used
55+
([ab878a6c](https://github.com/angular/angular.js/commit/ab878a6c038f47b95f3a7e85a4fdb599e0c73e63),
56+
[#8704](https://github.com/angular/angular.js/issues/8704))
57+
- treat undefined parse responses as parse errors
58+
([db044c40](https://github.com/angular/angular.js/commit/db044c408a7f8082758b96ab739348810c36e15a))
59+
- **ngRepeat:** improve errors for duplicate items
60+
([0604bb7b](https://github.com/angular/angular.js/commit/0604bb7b7a6156e33679396e805e327662d9a178))
61+
- **ngSwitch:** avoid removing DOM nodes twice within watch operation
62+
([c9b0bfec](https://github.com/angular/angular.js/commit/c9b0bfecc99837af1c97792b3ca3408ba182b0bb),
63+
[#8662](https://github.com/angular/angular.js/issues/8662))
64+
- **numberFilter:** pass through null and undefined values
65+
([2ae10f67](https://github.com/angular/angular.js/commit/2ae10f67fcde3e172f695956301ef796b68a50c2),
66+
[#8605](https://github.com/angular/angular.js/issues/8605), [#8842](https://github.com/angular/angular.js/issues/8842))
67+
68+
69+
## Features
70+
71+
- **core:**
72+
- add angular.reloadWithDebugInfo()
73+
([41c1b88](https://github.com/angular/angular.js/commit/41c1b8858f02c7310bfabdd545ebb28e90eb4258))
74+
- **$animate:**
75+
- use promises instead of callbacks for animations
76+
([bf0f5502](https://github.com/angular/angular.js/commit/bf0f5502b1bbfddc5cdd2f138efd9188b8c652a9))
77+
- coalesce concurrent class-based animations within a digest loop
78+
([2f4437b3](https://github.com/angular/angular.js/commit/2f4437b3a149eafb899f25933bd6c713b167d10e))
79+
- **$compile:**
80+
- bind isolate scope properties to controller
81+
([5f3f25a1](https://github.com/angular/angular.js/commit/5f3f25a1a6f9d4f2a66e2700df3b9c5606f1c255),
82+
[#7635](https://github.com/angular/angular.js/issues/7635), [#7645](https://github.com/angular/angular.js/issues/7645))
83+
- allow disabling scope info
84+
([a1e5cd5f](https://github.com/angular/angular.js/commit/a1e5cd5fe3906ebee8c400247a1f793d3e2239fb))
85+
- **$compile/ngBind:** allow disabling binding info
86+
([3660fd09](https://github.com/angular/angular.js/commit/3660fd0912d3ccf6def8c9f02d8d4c0621c8d91f))
87+
- **$http:** implement mechanism for coalescing calls to $apply in $http
88+
([ea6fc6e6](https://github.com/angular/angular.js/commit/ea6fc6e69c2a2aa213c71ed4e917a0d54d064e4c),
89+
[#8736](https://github.com/angular/angular.js/issues/8736), [#7634](https://github.com/angular/angular.js/issues/7634), [#5297](https://github.com/angular/angular.js/issues/5297))
90+
- **$rootScope:** implement $applyAsync to support combining calls to $apply into a single digest.
91+
([e94d454b](https://github.com/angular/angular.js/commit/e94d454b840f6cc55a440741382b407836ad245b))
92+
- **$templateRequest:** introduce the $templateRequest service
93+
([a70e2833](https://github.com/angular/angular.js/commit/a70e2833ea276107b11aafea96ef4a6724ad4d83))
94+
- **filter:** allow to define the timezone for formatting dates
95+
([4739b1d9](https://github.com/angular/angular.js/commit/4739b1d9daebfd094b6181c5f2cb52ff71e31c61))
96+
- **filterFilter:** pass index to function predicate
97+
([46343c60](https://github.com/angular/angular.js/commit/46343c603db6192daf5303b92eb664749326c7e6),
98+
[#654](https://github.com/angular/angular.js/issues/654))
99+
- **input:** allow to define the timezone for parsing dates
100+
([cc6fc199](https://github.com/angular/angular.js/commit/cc6fc199f5abaacdf781aa03634337d776eb0fc9),
101+
[#8447](https://github.com/angular/angular.js/issues/8447))
102+
- **minErr:** allow specifying ErrorConstructor in minErr constructor
103+
([a6bd4bc8](https://github.com/angular/angular.js/commit/a6bd4bc866a18f860c7548fa1b3f6d4c2a953416))
104+
- **ngModel:** provide validation API functions for sync and async validations
105+
([2ae4f40b](https://github.com/angular/angular.js/commit/2ae4f40be1803d999ca2a8cc30ec17ff19ea6d86))
106+
- **ngRoute:** alias string as redirectTo property in .otherwise()
107+
([3b5d75c0](https://github.com/angular/angular.js/commit/3b5d75c021e21fa6ec4dc6c47b8eafa55680ea63),
108+
[#7794](https://github.com/angular/angular.js/issues/7794))
109+
- **testability:** add $$testability service
110+
([85880a64](https://github.com/angular/angular.js/commit/85880a64900fa22a61feb926bf52de0965332ca5))
111+
112+
113+
## Performance Improvements
114+
115+
- **$compile:**
116+
- add debug classes in compile phase
117+
([e0489abd](https://github.com/angular/angular.js/commit/e0489abd8d9e4971ae23cc38805a92d227d1f3a1))
118+
- only iterate over elements with link functions
119+
([fdf9989f](https://github.com/angular/angular.js/commit/fdf9989f7cf1ed81982a788b75a338ac33334571),
120+
[#8741](https://github.com/angular/angular.js/issues/8741))
121+
- **nodeName_:** simplify the code and reduce the number of DOM calls
122+
([5a1a0c96](https://github.com/angular/angular.js/commit/5a1a0c96220101b5e040f0755e5eb401e2c73f65))
123+
- **select:** execute render after $digest cycle
124+
([6f7018d5](https://github.com/angular/angular.js/commit/6f7018d52fa4f9f9c7fa8e3035317d1239efb20f),
125+
[#8825](https://github.com/angular/angular.js/issues/8825))
126+
127+
128+
## Breaking Changes
129+
130+
- **$location**: due to [22948807](https://github.com/angular/angular.js/commit/22948807e324eb0b182b15b31045dc306a9f3231)
131+
132+
#### since 1.2.0 and 1.3.0-beta.1
133+
134+
Angular now requires a `<base>` tag when html5 mode of `$location` is enabled. Reasoning:
135+
Using html5 mode without a `<base href="...">` tag makes relative links for images, links, ...
136+
relative to the current url if the browser supports
137+
the history API. However, if the browser does not support the history API Angular falls back to using the `#`,
138+
and then all those relative links would be broken.
139+
140+
The `<base>` tag is also needed when a deep url is loaded from the server, e.g. `http://server/some/page/url`.
141+
In that case, Angular needs to decide which part of the url is the base of the application, and which part
142+
is path inside of the application.
143+
144+
To summarize: Now all relative links are always relative to the `<base>` tag.
145+
146+
Exception (also a breaking change):
147+
Link tags whose `href` attribute starts with a `#` will only change the hash of the url, but nothing else
148+
(e.g. `<a href="#someAnchor">`). This is to make it easy to scroll to anchors inside a document.
149+
150+
Related to #6162
151+
Closes #8492
152+
153+
#### since 1.2.17 and 1.3.0-beta.10
154+
155+
In html5 mode without a `<base>` tag on older browser that don't support the history API
156+
relative paths were adding up. E.g. clicking on `<a href="page1">` and then on `<a href="page2">`
157+
would produce `$location.path()==='/page1/page2'. The code that introduced this behavior was removed
158+
and Angular now also requires a `<base>` tag to be present when using html5 mode.
159+
160+
Closes #8172, #8233
161+
162+
163+
- **ngInclude, ngMessage, ngView and directives that load templates**: due to [a70e2833](https://github.com/angular/angular.js/commit/a70e2833ea276107b11aafea96ef4a6724ad4d83)
164+
165+
Angular will now throw a $compile minErr each a template fails to download
166+
for ngView, directives and ngMessage template requests. This changes the former
167+
behavior of silently ignoring failed HTTP requests--or when the template itself
168+
is empty. Please ensure that all directive, ngView and ngMessage code now properly
169+
addresses this scenario. NgInclude is uneffected from this change.
170+
171+
172+
- **$animate**: due to [23da6140](https://github.com/angular/angular.js/commit/23da614043fe5dcf0be132b86466eecb11c766a2)
173+
174+
If any stagger code consisted of having BOTH transition staggers and delay staggers
175+
together then that will not work the same way. Angular will now instead choose
176+
the highest stagger delay value and set the timeout to wait for that before
177+
applying the active CSS class.
178+
179+
180+
- **$animate**: due to [bf0f5502](https://github.com/angular/angular.js/commit/bf0f5502b1bbfddc5cdd2f138efd9188b8c652a9)
181+
182+
Both the API for the cancallation method and the done callback for
183+
$animate animations is different. Instead of using a callback function
184+
for each of the $animate animation methods, a promise is used instead.
185+
186+
```js
187+
//before
188+
$animate.enter(element, container, null, callbackFn);
189+
190+
//after
191+
$animate.enter(element, container).then(callbackFn);
192+
```
193+
194+
The animation can now be cancelled via `$animate.cancel(promise)`.
195+
196+
```js
197+
//before
198+
var cancelFn = $animate.enter(element, container);
199+
cancelFn(); //cancels the animation
200+
201+
//after
202+
var promise = $animate.enter(element, container);
203+
$animate.cancel(promise); //cancels the animation
204+
```
205+
206+
keep in mind that you will still need to run $scope.$apply inside of the `then` callback
207+
to trigger a digest.
208+
209+
210+
- **$animate**: due to [2f4437b3](https://github.com/angular/angular.js/commit/2f4437b3a149eafb899f25933bd6c713b167d10e)
211+
212+
$animate.addClass, $animate.removeClass and $animate.setClass will no longer start the animation
213+
right after being called in the directive code. The animation will only commence once a digest
214+
has passed. This means that all animation-related testing code requires an extra digest to kick
215+
off the animation.
216+
217+
```js
218+
//before this fix
219+
$animate.addClass(element, 'super');
220+
expect(element).toHaveClass('super');
221+
222+
//now
223+
$animate.addClass(element, 'super');
224+
$rootScope.$digest();
225+
expect(element).toHaveClass('super');
226+
```
227+
228+
$animate will also tally the amount of times classes are added and removed and only animate
229+
the left over classes once the digest kicks in. This means that for any directive code that
230+
adds and removes the same CSS class on the same element then this may result in no animation
231+
being triggered at all.
232+
233+
```js
234+
$animate.addClass(element, 'klass');
235+
$animate.removeClass(element, 'klass');
236+
237+
$rootScope.$digest();
238+
239+
//nothing happens...
240+
```
241+
242+
243+
- **$compile/ngBind:** due to [3660fd09](https://github.com/angular/angular.js/commit/3660fd0912d3ccf6def8c9f02d8d4c0621c8d91f),
244+
245+
The value of `$binding` data property on an element is always an array now
246+
and the expressions do not include the curly braces `{{ ... }}`.
247+
248+
249+
- **currencyFilter:** due to [c2aaddbe](https://github.com/angular/angular.js/commit/c2aaddbe4b21348aab8c13a78cdd6aaee846ae4e),
250+
previously the currency filter would convert null and undefined values into empty string, after this change
251+
these values will be passed through.
252+
253+
Only cases when the currency filter is chained with another filter that doesn't expect null/undefined will be affected. This
254+
should be very rare.
255+
256+
This change will not change the visual output of the filter because the interpolation will convert the null/undefined to
257+
an empty string.
258+
259+
Closes #8605
260+
261+
262+
- **numberFilter:** due to [2ae10f67](https://github.com/angular/angular.js/commit/2ae10f67fcde3e172f695956301ef796b68a50c2),
263+
previously the number filter would convert null and undefined values into empty string, after this change
264+
these values will be passed through.
265+
266+
Only cases when the number filter is chained with another filter that doesn't expect null/undefined will be affected. This
267+
should be very rare.
268+
269+
This change will not change the visual output of the filter because the interpolation will convert the null/undefined to
270+
an empty string.
271+
272+
Closes #8605
273+
Closes #8842
274+
275+
276+
- **input:**
277+
- due to [77ce5b89](https://github.com/angular/angular.js/commit/77ce5b89f97aa83c3eb1fe2e19375ef00a822015),
278+
279+
NgModel.viewValue will always be used when rendering validations for `minlength` and `maxlength`.
280+
281+
Closes #7967
282+
Closes #8811
283+
284+
- **input:**
285+
- due to [29f0b568](https://github.com/angular/angular.js/commit/29f0b568debab7810752969d363d337099e96cdc),
286+
287+
288+
According to the HTML5 spec `input[time]` should create dates
289+
based on the year 1970 (used to be based on the year 1900).
290+
291+
Related to #8447.
292+
293+
294+
- **ngModel**: due to [db044c40](https://github.com/angular/angular.js/commit/db044c408a7f8082758b96ab739348810c36e15a)
295+
296+
Any parser code from before that returned an `undefined` value
297+
(or nothing at all) will now cause a parser failure. When this occurs
298+
none of the validators present in `$validators` will run until the parser
299+
error is gone. The error will be stored on `ngModel.$error`.
300+
301+
302+
303+
304+
- **ngEventDirs:** due to [719c747c](https://github.com/angular/angular.js/commit/719c747cd892ee933e7e414a7dc97e657b88317d),
305+
306+
The `blur` and `focus` event fire synchronously, also during DOM operations
307+
that remove elements. This lead to errors as the Angular model was not
308+
in a consistent state. See this [fiddle](http://jsfiddle.net/fq1dq5yb/) for a demo.
309+
310+
This change executes the expression of those events using
311+
`scope.$evalAsync` if an `$apply` is in progress, otherwise
312+
keeps the old behavior.
313+
314+
Fixes #4979
315+
Fixes #5945
316+
Closes #8803
317+
Closes #6910
318+
Closes #5402
319+
320+
321+
1322
<a name="1.2.23"></a>
2323
# 1.2.23 superficial-malady (2014-08-22)
3324

0 commit comments

Comments
 (0)