|
| 1 | +<a name="v1.4.0-rc.0"></a> |
| 2 | +# v1.4.0-rc.0 smooth-unwinding (2015-04-10) |
| 3 | + |
| 4 | + |
| 5 | +## Bug Fixes |
| 6 | + |
| 7 | +- **$compile:** |
| 8 | + - throw error on invalid directive name |
| 9 | + ([170ff9a3](https://github.com/angular/angular.js/commit/170ff9a37dea8772dda7c89e84176ac1a8992878), |
| 10 | + [#11281](https://github.com/angular/angular.js/issues/11281), [#11109](https://github.com/angular/angular.js/issues/11109)) |
| 11 | + - update data() when controller returns custom value |
| 12 | + ([9900610e](https://github.com/angular/angular.js/commit/9900610eea4ece87b063f2aa9d82c75c369927df), |
| 13 | + [#11147](https://github.com/angular/angular.js/issues/11147), [#11326](https://github.com/angular/angular.js/issues/11326)) |
| 14 | +- **$http:** throw error if `success` and `error` methods do not receive a function |
| 15 | + ([1af563d4](https://github.com/angular/angular.js/commit/1af563d43e74cb7be53e815b66fd91dd93986ed6), |
| 16 | + [#11330](https://github.com/angular/angular.js/issues/11330), [#11333](https://github.com/angular/angular.js/issues/11333)) |
| 17 | +- **$parse:** fix parse errors on older Android WebViews which choke with reserved keywords |
| 18 | + ([10ae33b2](https://github.com/angular/angular.js/commit/10ae33b2d88b04df76f519edc50a47fa30f83e96), |
| 19 | + [#11455](https://github.com/angular/angular.js/issues/11455)) |
| 20 | +- **$rootScope:** allow destroying a root scope |
| 21 | + ([f8c8cf69](https://github.com/angular/angular.js/commit/f8c8cf698aa23640249d79fd405605694478e4f7), |
| 22 | + [#11241](https://github.com/angular/angular.js/issues/11241), [#10895](https://github.com/angular/angular.js/issues/10895)) |
| 23 | +- **cookieReader:** safely access $document so it can be mocked |
| 24 | + ([a057e089](https://github.com/angular/angular.js/commit/a057e0896a7fe2fdaba50b2515555b86e4f4be27), |
| 25 | + [#11373](https://github.com/angular/angular.js/issues/11373), [#11388](https://github.com/angular/angular.js/issues/11388)) |
| 26 | +- **filterFilter:** fix matching against `null`/`undefined` |
| 27 | + ([b5002ab6](https://github.com/angular/angular.js/commit/b5002ab62ad6e13f4339e20106e1fdece14912a2), |
| 28 | + [#11432](https://github.com/angular/angular.js/issues/11432), [#11445](https://github.com/angular/angular.js/issues/11445)) |
| 29 | +- **ngAnimate:** ensure that minified repaint code isn't removed |
| 30 | + ([c55a4944](https://github.com/angular/angular.js/commit/c55a494433e619aad0c7ef9fddadc0b3fdf53915), |
| 31 | + [#9936](https://github.com/angular/angular.js/issues/9936)) |
| 32 | +- **ngAria:** handle elements with role="checkbox/menuitemcheckbox" |
| 33 | + ([44337f63](https://github.com/angular/angular.js/commit/44337f63fa94116795e83e3a764a6ba6782809c7), |
| 34 | + [#11317](https://github.com/angular/angular.js/issues/11317), [#11321](https://github.com/angular/angular.js/issues/11321)) |
| 35 | +- **ngModel:** allow setting model to NaN when asyncValidator is present |
| 36 | + ([948120ec](https://github.com/angular/angular.js/commit/948120ecdbc4dd07880c0107564c50c7675b8a93), |
| 37 | + [#11315](https://github.com/angular/angular.js/issues/11315), [#11411](https://github.com/angular/angular.js/issues/11411)) |
| 38 | +- **ngTouch:** register touches properly when jQuery is used |
| 39 | + ([06a9f0a9](https://github.com/angular/angular.js/commit/06a9f0a95f0e72fa2e9879fe8a49e9bf69986a5f), |
| 40 | + [#4001](https://github.com/angular/angular.js/issues/4001), [#8584](https://github.com/angular/angular.js/issues/8584), [#10797](https://github.com/angular/angular.js/issues/10797), [#11488](https://github.com/angular/angular.js/issues/11488)) |
| 41 | +- **select:** don't call $render twice if $viewValue ref changes |
| 42 | + ([7e5c447f](https://github.com/angular/angular.js/commit/7e5c447fa9ad7d81cc818d6e79392c3e4a6b23a0), |
| 43 | + [#11329](https://github.com/angular/angular.js/issues/11329), [#11412](https://github.com/angular/angular.js/issues/11412)) |
| 44 | + |
| 45 | + |
| 46 | +## Features |
| 47 | + |
| 48 | +- **$anchorScroll:** allow scrolling to a specified element |
| 49 | + ([731c8b5e](https://github.com/angular/angular.js/commit/731c8b5e2d01a44aa91f967f1a6acbadb8005a8b), |
| 50 | + [#4568](https://github.com/angular/angular.js/issues/4568), [#9596](https://github.com/angular/angular.js/issues/9596)) |
| 51 | +- **$animate:** complete refactor of internal animation code |
| 52 | + ([c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef)) |
| 53 | +- **$http:** support custom params serializers |
| 54 | + ([6c8464ad](https://github.com/angular/angular.js/commit/6c8464ad14dd308349f632245c1a064c9aae242a), |
| 55 | + [#3740](https://github.com/angular/angular.js/issues/3740), [#7429](https://github.com/angular/angular.js/issues/7429), [#9224](https://github.com/angular/angular.js/issues/9224), [#11461](https://github.com/angular/angular.js/issues/11461)) |
| 56 | +- **$interpolate:** extend interpolation with MessageFormat like syntax |
| 57 | + ([1e58488a](https://github.com/angular/angular.js/commit/1e58488ad65abf7031bab5813523bb9d86dbd28c), |
| 58 | + [#11152](https://github.com/angular/angular.js/issues/11152)) |
| 59 | +- **angular.Module:** add `decorator` method |
| 60 | + ([e57138d7](https://github.com/angular/angular.js/commit/e57138d7eff1210f99238c475fff57530bf0ab19), |
| 61 | + [#11305](https://github.com/angular/angular.js/issues/11305), [#11300](https://github.com/angular/angular.js/issues/11300)) |
| 62 | +- **ngClass:** add support for conditional map within an array. |
| 63 | + ([4588e627](https://github.com/angular/angular.js/commit/4588e627bb7238b2113241919b948d0e5166c76d), |
| 64 | + [#4807](https://github.com/angular/angular.js/issues/4807)) |
| 65 | +- **travis:** run unit tests on iOS 8 |
| 66 | + ([2cdb2016](https://github.com/angular/angular.js/commit/2cdb2016b9d89abfb5ab988b67d5f26f3bf21908), |
| 67 | + [#11479](https://github.com/angular/angular.js/issues/11479)) |
| 68 | + |
| 69 | + |
| 70 | +## Performance Improvements |
| 71 | + |
| 72 | +- **$rootScope:** remove history event handler when app is torn down |
| 73 | + ([d996305b](https://github.com/angular/angular.js/commit/d996305b4470f80fbb1cbddf54b7d10ffbb6ab47), |
| 74 | + [#9897](https://github.com/angular/angular.js/issues/9897), [#9905](https://github.com/angular/angular.js/issues/9905)) |
| 75 | +- **benchmark:** add ngmodel benchmarks to largetable-bp |
| 76 | + ([b8dbdb0c](https://github.com/angular/angular.js/commit/b8dbdb0c5e2cd176c6d94d60f781cfc02e646592), |
| 77 | + [#11082](https://github.com/angular/angular.js/issues/11082)) |
| 78 | +- **ngOptions:** only perform deep equality check on ngModel if using track by |
| 79 | + ([171b9f7f](https://github.com/angular/angular.js/commit/171b9f7f2339ef9047b8526b2c3f36bb58d14feb), |
| 80 | + [#11448](https://github.com/angular/angular.js/issues/11448), [#11447](https://github.com/angular/angular.js/issues/11447)) |
| 81 | + |
| 82 | + |
| 83 | +## Breaking Changes |
| 84 | + |
| 85 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 86 | + JavaSript and CSS animations can no longer be run in |
| 87 | +parallel. With earlier versions of ngAnimate, both CSS and JS animations |
| 88 | +would be run together when multiple animations were detected. This |
| 89 | +feature has now been removed, however, the same effect, with even more |
| 90 | +possibilities, can be achieved by injecting `$animateCss` into a |
| 91 | +JavaScript-defined animation and creating custom CSS-based animations |
| 92 | +from there. Read the ngAnimate docs for more info. |
| 93 | + |
| 94 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 95 | + The function params for `$animate.enabled()` when an |
| 96 | +element is used are now flipped. This fix allows the function to act as |
| 97 | +a getter when a single element param is provided. |
| 98 | + |
| 99 | +```js |
| 100 | +// < 1.4 |
| 101 | +$animate.enabled(false, element); |
| 102 | + |
| 103 | +// 1.4+ |
| 104 | +$animate.enabled(element, false); |
| 105 | +``` |
| 106 | + |
| 107 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 108 | + In addition to disabling the children of the element, |
| 109 | +`$animate.enabled(element, false)` will now also disable animations on |
| 110 | +the element itself. |
| 111 | + |
| 112 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 113 | + Animation-related callbacks are now fired on |
| 114 | +`$animate.on` instead of directly being on the element. |
| 115 | + |
| 116 | +```js |
| 117 | +// < 1.4 |
| 118 | +element.on('$animate:before', function(e, data) { |
| 119 | + if (data.event === 'enter') { ... } |
| 120 | +}); |
| 121 | +element.off('$animate:before', fn); |
| 122 | + |
| 123 | +// 1.4+ |
| 124 | +$animate.on(element, 'enter', function(data) { |
| 125 | + //... |
| 126 | +}); |
| 127 | +$animate.off(element, 'enter', fn); |
| 128 | +``` |
| 129 | + |
| 130 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 131 | + There is no need to call `$scope.$apply` or |
| 132 | +`$scope.$digest` inside of a animation promise callback anymore |
| 133 | +since the promise is resolved within a digest automatically (but a |
| 134 | +digest is not run unless the promise is chained). |
| 135 | + |
| 136 | +```js |
| 137 | +// < 1.4 |
| 138 | +$animate.enter(element).then(function() { |
| 139 | + $scope.$apply(function() { |
| 140 | + $scope.explode = true; |
| 141 | + }); |
| 142 | +}); |
| 143 | + |
| 144 | +// 1.4+ |
| 145 | +$animate.enter(element).then(function() { |
| 146 | + $scope.explode = true; |
| 147 | +}); |
| 148 | +``` |
| 149 | + |
| 150 | +- **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), |
| 151 | + When an enter, leave or move animation is triggered then it |
| 152 | +will always end any pending or active parent class based animations |
| 153 | +(animations triggered via ngClass) in order to ensure that any CSS |
| 154 | +styles are resolved in time. |
| 155 | + |
| 156 | + |
| 157 | + |
| 158 | + |
1 | 159 | <a name="1.4.0-beta.6"></a>
|
2 | 160 | # 1.4.0-beta.6 cookie-liberation (2015-03-17)
|
3 | 161 |
|
|
0 commit comments