|
| 1 | + |
| 2 | +<a name="1.4.0-rc.2"></a> |
| 3 | +# 1.4.0-rc.2 rocket-zambonimation (2015-05-12) |
| 4 | + |
| 5 | + |
| 6 | +## Bug Fixes |
| 7 | + |
| 8 | +- **$compile:** ensure directive names have no leading or trailing whitespace |
| 9 | + ([bab474aa](https://github.com/angular/angular.js/commit/bab474aa8b146f6732857c3af1a8b3b010fda8b0), |
| 10 | + [#11397](https://github.com/angular/angular.js/issues/11397), [#11772](https://github.com/angular/angular.js/issues/11772)) |
| 11 | +- **$httpParamSerializerJQLike:** follow jQuery logic for nested params |
| 12 | + ([2420a0a7](https://github.com/angular/angular.js/commit/2420a0a77e27b530dbb8c41319b2995eccf76791), |
| 13 | + [#11551](https://github.com/angular/angular.js/issues/11551), [#11635](https://github.com/angular/angular.js/issues/11635)) |
| 14 | +- **jqLite:** check for "length" in obj in isArrayLike to prevent iOS8 JIT bug from surfacing |
| 15 | + ([426a5ac0](https://github.com/angular/angular.js/commit/426a5ac0547109648e5c5e358f668c274a111ab2), |
| 16 | + [#11508](https://github.com/angular/angular.js/issues/11508)) |
| 17 | +- **ngAnimate:** |
| 18 | + - ensure that multiple requests to requestAnimationFrame are buffered |
| 19 | + ([db20b830](https://github.com/angular/angular.js/commit/db20b830fc6074a00dc11d3f47d665c55e8bb515), |
| 20 | + [#11791](https://github.com/angular/angular.js/issues/11791)) |
| 21 | + - ensure that an object is always returned even when no animation is set to run |
| 22 | + ([d5683d21](https://github.com/angular/angular.js/commit/d5683d21165e725bc5a850e795f681b0a8a008f5)) |
| 23 | + - force use of `ng-anchor` instead of a suffixed `-anchor` CSS class when triggering anchor animations |
| 24 | + ([df24410c](https://github.com/angular/angular.js/commit/df24410c17d51a8d44929b9cffee2c91cedfed72)) |
| 25 | + - rename `ng-animate-anchor` to `ng-anchor` |
| 26 | + ([e6d053de](https://github.com/angular/angular.js/commit/e6d053de0993c0d38de46ad8a9c6760537316430)) |
| 27 | + - ensure that shared CSS classes between anchor nodes are retained |
| 28 | + ([e0014002](https://github.com/angular/angular.js/commit/e0014002370278778077d0612f9fab6beb80d07a), |
| 29 | + [#11681](https://github.com/angular/angular.js/issues/11681)) |
| 30 | + - prohibit usage of the `ng-animate` class with classNameFilter |
| 31 | + ([1002b80a](https://github.com/angular/angular.js/commit/1002b80a6fb5d98c424a01330234276d65d93c0b), |
| 32 | + [#11431](https://github.com/angular/angular.js/issues/11431), [#11807](https://github.com/angular/angular.js/issues/11807)) |
| 33 | + - ensure that the temporary CSS classes are applied before detection |
| 34 | + ([f7e9ff1a](https://github.com/angular/angular.js/commit/f7e9ff1aba9ed70835c084e6e154f6b0bf9c3a19), |
| 35 | + [#11769](https://github.com/angular/angular.js/issues/11769), [#11804](https://github.com/angular/angular.js/issues/11804)) |
| 36 | + - ensure that all jqLite elements are deconstructed properly |
| 37 | + ([64d05180](https://github.com/angular/angular.js/commit/64d05180a667e586328fbdbd328889d3b003571d), |
| 38 | + [#11658](https://github.com/angular/angular.js/issues/11658)) |
| 39 | + - ensure animations are not attempted on text nodes |
| 40 | + ([2aacc2d6](https://github.com/angular/angular.js/commit/2aacc2d622893e05eb94b3974d562e681cc3a17f), |
| 41 | + [#11703](https://github.com/angular/angular.js/issues/11703)) |
| 42 | + - ensure JS animations recognize $animateCss directly |
| 43 | + ([0681a540](https://github.com/angular/angular.js/commit/0681a5400e4150a961f9c8651e55623ca23b0cc2)) |
| 44 | +- **ngClass:** add/remove classes which are properties of Object.prototype |
| 45 | + ([f7b99970](https://github.com/angular/angular.js/commit/f7b999703f4f3bdaea035ce692f1a656b0c1a933), |
| 46 | + [#11813](https://github.com/angular/angular.js/issues/11813), [#11814](https://github.com/angular/angular.js/issues/11814)) |
| 47 | +- **ngOptions:** |
| 48 | + - ensure that tracked properties are always watched |
| 49 | + ([b5a9053b](https://github.com/angular/angular.js/commit/b5a9053ba33d48db2482ca6736d1fcae8b33d0f8), |
| 50 | + [#11784](https://github.com/angular/angular.js/issues/11784)) |
| 51 | + - ensure label is watched in all cases |
| 52 | + ([ae98dadf](https://github.com/angular/angular.js/commit/ae98dadf6dca3313746f42a441c7659654dd9d50), |
| 53 | + [#11765](https://github.com/angular/angular.js/issues/11765)) |
| 54 | + - iterate over the options collection in the same way as `ngRepeat` |
| 55 | + ([dfa722a8](https://github.com/angular/angular.js/commit/dfa722a8a6864793fd9580d8ae704a06d10b5509), |
| 56 | + [#11733](https://github.com/angular/angular.js/issues/11733)) |
| 57 | + - use watchCollection not deep watch of ngModel |
| 58 | + ([47f9fc3e](https://github.com/angular/angular.js/commit/47f9fc3e70bc361e8c11fe68dc3ec4489238efb3), |
| 59 | + [#11372](https://github.com/angular/angular.js/issues/11372), [#11653](https://github.com/angular/angular.js/issues/11653), [#11743](https://github.com/angular/angular.js/issues/11743)) |
| 60 | +- **ngTouch:** |
| 61 | + - check undefined tagName for SVG event target |
| 62 | + ([74eb17d7](https://github.com/angular/angular.js/commit/74eb17d7c8232f72f134bf2546f10fed7234d276)) |
| 63 | + - don't prevent click event after a touchmove |
| 64 | + ([95521876](https://github.com/angular/angular.js/commit/95521876eb9eb330548b0549f0cfe22a26d88f6e), |
| 65 | + [#10985](https://github.com/angular/angular.js/issues/10985)) |
| 66 | + |
| 67 | + |
| 68 | +## Features |
| 69 | + |
| 70 | +- **$resource:** include request context in error message |
| 71 | + ([266bc652](https://github.com/angular/angular.js/commit/266bc6520ba4d188dbc949643def102604f98905), |
| 72 | + [#11363](https://github.com/angular/angular.js/issues/11363)) |
| 73 | + |
| 74 | + |
| 75 | +## Breaking Changes |
| 76 | + |
| 77 | +### ngAnimate |
| 78 | + |
| 79 | +- **$animateCss:** due to [d5683d21](https://github.com/angular/angular.js/commit/d5683d21165e725bc5a850e795f681b0a8a008f5), |
| 80 | + The $animateCss service will now always return an |
| 81 | +object even if the animation is not set to run. If your code is using |
| 82 | +$animateCss then please consider the following code change: |
| 83 | + |
| 84 | +``` |
| 85 | +// before |
| 86 | +var animator = $animateCss(element, { ... }); |
| 87 | +if (!animator) { |
| 88 | + continueApp(); |
| 89 | + return; |
| 90 | +} |
| 91 | +var runner = animator.start(); |
| 92 | +runner.done(continueApp); |
| 93 | +runner.then(continueApp); |
| 94 | + |
| 95 | +// now |
| 96 | +var animator = $animateCss(element, { ... }); |
| 97 | +var runner = animator.start(); |
| 98 | +runner.done(continueApp); |
| 99 | +runner.then(continueApp); |
| 100 | +``` |
| 101 | + |
| 102 | +- due to [df24410c](https://github.com/angular/angular.js/commit/df24410c17d51a8d44929b9cffee2c91cedfed72), |
| 103 | +Prior to this fix there were to ways to apply CSS |
| 104 | +animation code to an anchor animation. With this fix, the suffixed |
| 105 | +CSS -anchor classes are now not used anymore for CSS anchor animations. |
| 106 | + |
| 107 | +Instead just use the `ng-anchor` CSS class like so: |
| 108 | + |
| 109 | +```html |
| 110 | +<div class="container-animation" ng-if="on"> |
| 111 | + <div ng-animate-ref="1" class="my-anchor-element"></div> |
| 112 | +</div> |
| 113 | + |
| 114 | +<div class="container-animation" ng-if="!on"> |
| 115 | + <div ng-animate-ref="1" class="my-anchor-element"></div> |
| 116 | +</div> |
| 117 | +``` |
| 118 | + |
| 119 | +**before**: |
| 120 | +```css |
| 121 | +/* before (notice the container-animation CSS class) */ |
| 122 | +.container-animation-anchor { |
| 123 | + transition:0.5s linear all; |
| 124 | +} |
| 125 | +``` |
| 126 | + |
| 127 | +**now**: |
| 128 | +```css |
| 129 | +/* now (just use `ng-anchor` on a class that both the |
| 130 | + elements that contain `ng-animate-ref` share) */ |
| 131 | +.my-anchor-element.ng-anchor { |
| 132 | + transition:0.5s linear all; |
| 133 | +} |
| 134 | +``` |
| 135 | + |
| 136 | +- due to [e6d053de](https://github.com/angular/angular.js/commit/e6d053de0993c0d38de46ad8a9c6760537316430), |
| 137 | +if your CSS code made use of the `ng-animate-anchor` |
| 138 | +CSS class for referencing the anchored animation element then your |
| 139 | +code must now use `ng-anchor` instead. |
| 140 | + |
| 141 | +- due to [1002b80a](https://github.com/angular/angular.js/commit/1002b80a6fb5d98c424a01330234276d65d93c0b), |
| 142 | +partially or fully using a regex value containing |
| 143 | +`ng-animate` as a token is not allowed anymore. Doing so will trigger a |
| 144 | +minErr exception to be thrown. |
| 145 | + |
| 146 | +So don't do this: |
| 147 | + |
| 148 | +```js |
| 149 | +// only animate elements that contain the `ng-animate` CSS class |
| 150 | +$animateProvider.classNameFilter(/ng-animate/); |
| 151 | + |
| 152 | +// or partially contain it |
| 153 | +$animateProvider.classNameFilter(/some-class ng-animate another-class/); |
| 154 | +``` |
| 155 | + |
| 156 | +but this is OK: |
| 157 | + |
| 158 | +```js |
| 159 | +$animateProvider.classNameFilter(/ng-animate-special/); |
| 160 | +``` |
| 161 | + |
| 162 | + |
| 163 | +### ngOptions |
| 164 | + |
| 165 | +- ** due to [dfa722a8](https://github.com/angular/angular.js/commit/dfa722a8a6864793fd9580d8ae704a06d10b5509), |
| 166 | + |
| 167 | + |
| 168 | +Although it is unlikely that anyone is using it in this way, this change does change the |
| 169 | +behaviour of `ngOptions` in the following case: |
| 170 | + |
| 171 | + * you are iterating over an array-like object, using the array form of the `ngOptions` syntax |
| 172 | +(`item.label for item in items`) and that object contains non-numeric property keys. |
| 173 | + |
| 174 | +In this case these properties with non-numeric keys will be ignored. |
| 175 | + |
| 176 | +** Here array-like is defined by the result of a call to this internal function: |
| 177 | +https://github.com/angular/angular.js/blob/v1.4.0-rc.1/src/Angular.js#L198-L211 ** |
| 178 | + |
| 179 | +To get the desired behaviour you need to iterate using the object form of the `ngOptions` syntax |
| 180 | +(`value.label` for (key, value) in items)`). |
| 181 | + |
| 182 | + |
| 183 | + |
| 184 | + |
1 | 185 | <a name="v1.4.0-rc.1"></a>
|
2 | 186 | # v1.4.0-rc.1 sartorial-chronography (2015-04-24)
|
3 | 187 |
|
|
0 commit comments