pax_global_header00006660000000000000000000000064130247405700014514gustar00rootroot0000000000000052 comment=11fbc17f65926df18e4da788b7148cc5d0554aeb angular.js-1.5.10/000077500000000000000000000000001302474057000136445ustar00rootroot00000000000000angular.js-1.5.10/.editorconfig000066400000000000000000000004601302474057000163210ustar00rootroot00000000000000# http://editorconfig.org root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true [dropdown-toggle.js] trim_trailing_whitespace = false insert_final_newline = false [htmlparser.js] insert_final_newline = false angular.js-1.5.10/.eslintignore000066400000000000000000000003321302474057000163450ustar00rootroot00000000000000bower_components/** build/** docs/bower_components/** docs/app/assets/js/angular-bootstrap/** docs/config/templates/** node_modules/** lib/htmlparser/** src/angular.bind.js src/ngParseExt/ucd.js i18n/closure/** tmp/** angular.js-1.5.10/.eslintrc-base.json000066400000000000000000000072621302474057000173570ustar00rootroot00000000000000{ "rules": { // Rules are divided into sections from http://eslint.org/docs/rules/ // Possible errors "comma-dangle": ["error", "never"], "no-cond-assign": ["error", "except-parens"], "no-constant-condition": ["error", {"checkLoops": false}], "no-control-regex": "error", "no-debugger": "error", "no-dupe-args": "error", "no-dupe-keys": "error", "no-duplicate-case": "error", "no-empty-character-class": "error", "no-empty": "error", "no-ex-assign": "error", "no-extra-boolean-cast": "error", "no-extra-semi": "error", "no-func-assign": "error", "no-inner-declarations": "error", "no-invalid-regexp": "error", "no-irregular-whitespace": "error", "no-negated-in-lhs": "error", "no-obj-calls": "error", "no-regex-spaces": "error", "no-sparse-arrays": "error", "no-unreachable": "error", "use-isnan": "error", "no-unsafe-finally": "error", "valid-typeof": "error", "no-unexpected-multiline": "error", // Best practices "accessor-pairs": "error", "array-callback-return": "error", "eqeqeq": ["error", "allow-null"], "no-alert": "error", "no-caller": "error", "no-case-declarations": "error", "no-eval": "error", "no-extend-native": "error", "no-extra-bind": "error", "no-extra-label": "error", "no-fallthrough": "error", "no-floating-decimal": "error", "no-implied-eval": "error", "no-invalid-this": "error", "no-iterator": "error", "no-multi-str": "error", "no-new-func": "error", "no-new-wrappers": "error", "no-new": "error", "no-octal-escape": "error", "no-octal": "error", "no-proto": "error", "no-redeclare": "error", "no-return-assign": "error", "no-script-url": "error", "no-self-assign": "error", "no-self-compare": "error", "no-sequences": "error", "no-throw-literal": "error", "no-unmodified-loop-condition": "error", "no-unused-expressions": "error", "no-unused-labels": "error", "no-useless-call": "error", "no-useless-concat": "error", "no-useless-escape": "error", "no-void": "error", "no-with": "error", "radix": "error", "wrap-iife": ["error", "inside"], // Strict mode "strict": ["error", "global"], // Variables "no-delete-var": "error", "no-label-var": "error", "no-restricted-globals": ["error", "event"], "no-shadow-restricted-names": "error", "no-undef-init": "error", "no-undef": "error", "no-unused-vars": ["error", { "vars": "local", "args": "none" }], // Node.js "handle-callback-err": "error", // Stylistic issues "array-bracket-spacing": ["error", "never"], "brace-style": ["error", "1tbs", { "allowSingleLine": true }], "comma-style": ["error", "last"], "eol-last": "error", "keyword-spacing": "error", "linebreak-style": ["error", "unix"], "max-len": ["error", { "code": 200, "ignoreComments": true, "ignoreUrls": true }], "new-cap": "error", "new-parens": "error", "no-array-constructor": "error", "no-bitwise": "error", "no-mixed-spaces-and-tabs": "error", "no-multiple-empty-lines": ["error", { "max": 3, "maxEOF": 1 }], "no-whitespace-before-property": "error", "no-spaced-func": "error", "no-trailing-spaces": "error", "no-unneeded-ternary": "error", "quotes": ["error", "single"], "semi-spacing": "error", "semi": "error", "space-before-blocks": ["error", "always"], "space-before-function-paren": ["error", "never"], "space-in-parens": ["error", "never"], "space-infix-ops": "error", "space-unary-ops": ["error", { "words": true, "nonwords": false }], "unicode-bom": ["error", "never"] } } angular.js-1.5.10/.eslintrc-browser.json000066400000000000000000000006121302474057000201200ustar00rootroot00000000000000{ "extends": "./.eslintrc-base.json", "env": { // Note: don't set `"browser": true`; code in "src/" should be compatible with // non-browser environments like Node.js with a custom window implementation // like jsdom. All browser globals should be taken from window. "browser": false, "node": false }, "globals": { "window": false, "angular": false } } angular.js-1.5.10/.eslintrc-node.json000066400000000000000000000001411302474057000173570ustar00rootroot00000000000000{ "extends": "./.eslintrc-base.json", "env": { "browser": false, "node": true } } angular.js-1.5.10/.eslintrc-todo.json000066400000000000000000000020231302474057000174000ustar00rootroot00000000000000{ // This config contains proposed rules that we'd like to have enabled but haven't // converted the code to adhere yet. If a decision comes to not enable one of these // rules, it should be removed from the file. Every rule that got enabled in the // end should be moved from here to a respective section in .eslintrc.json "rules": { // Rules are divided into sections from http://eslint.org/docs/rules/ // Best practices "complexity": ["error", 10], "dot-notation": "error", "dot-location": ["error", "property"], // Stylistic issues "block-spacing": ["error", "always"], "comma-spacing": "error", "id-blacklist": ["error", "event"], "indent": ["error", 2], "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "minimum" }], "object-curly-spacing": ["error", "never"], "object-property-newline": ["error", { "allowMultiplePropertiesPerLine": true }], "operator-linebreak": ["error", "after", { "overrides": { "?": "before", ":": "before" }}] } } angular.js-1.5.10/.eslintrc.json000066400000000000000000000000711302474057000164360ustar00rootroot00000000000000{ "root": true, "extends": "./.eslintrc-node.json" } angular.js-1.5.10/.gitattributes000066400000000000000000000001771302474057000165440ustar00rootroot00000000000000# Auto detect text files and perform LF normalization * text=auto # JS files must always use LF for tools to work *.js eol=lf angular.js-1.5.10/.github/000077500000000000000000000000001302474057000152045ustar00rootroot00000000000000angular.js-1.5.10/.github/ISSUE_TEMPLATE.md000066400000000000000000000016571302474057000177220ustar00rootroot00000000000000***Note*: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.** **Do you want to request a *feature* or report a *bug*?** **What is the current behavior?** **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).** **What is the expected behavior?** **What is the motivation / use case for changing the behavior?** **Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.** **Other information (e.g. stacktraces, related issues, suggestions how to fix)** angular.js-1.5.10/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000011671302474057000210120ustar00rootroot00000000000000**What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)** **What is the current behavior? (You can also link to an open issue here)** **What is the new behavior (if this is a feature change)?** **Does this PR introduce a breaking change?** **Please check if the PR fulfills these requirements** - [ ] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format - [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Docs have been added / updated (for bug fixes / features) **Other information**: angular.js-1.5.10/.gitignore000066400000000000000000000004611302474057000156350ustar00rootroot00000000000000/build/ /benchpress-build/ .DS_Store gen_docs.disable test.disable regression/temp*.html performance/temp*.html .idea/workspace.xml *~ *.swp angular.js.tmproj /node_modules/ bower_components/ angular.xcodeproj .idea *.iml .agignore .lvimrc libpeerconnection.log npm-debug.log /tmp/ /scripts/bower/bower-* angular.js-1.5.10/.nvmrc000066400000000000000000000000021302474057000147620ustar00rootroot000000000000006 angular.js-1.5.10/.travis.yml000066400000000000000000000033551302474057000157630ustar00rootroot00000000000000language: node_js sudo: false node_js: - '6' cache: directories: - node_modules - bower_components - docs/bower_components branches: except: - /^g3_.*$/ env: matrix: - JOB=ci-checks - JOB=unit BROWSER_PROVIDER=saucelabs - JOB=docs-e2e BROWSER_PROVIDER=saucelabs - JOB=e2e TEST_TARGET=jqlite BROWSER_PROVIDER=saucelabs - JOB=e2e TEST_TARGET=jquery BROWSER_PROVIDER=saucelabs global: - CXX=g++-4.8 # node 4 likes the G++ v4.8 compiler - SAUCE_USERNAME=angular-ci - SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987 - LOGS_DIR=/tmp/angular-build/logs - BROWSER_PROVIDER_READY_FILE=/tmp/browsersprovider-tunnel-ready # node 4 likes the G++ v4.8 compiler # see https://docs.travis-ci.com/user/languages/javascript-with-nodejs#Node.js-v4-(or-io.js-v3)-compiler-requirements addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-4.8 before_install: - curl -o- -L https://raw.githubusercontent.com/yarnpkg/yarn/2a0afc73210c7a82082585283e518eeb88ca19ae/scripts/install-latest.sh | bash -s -- --version 0.17.9 - export PATH=$HOME/.yarn/bin:$PATH before_script: - du -sh ./node_modules ./bower_components/ ./docs/bower_components/ || true - ./scripts/travis/before_build.sh script: - ./scripts/travis/build.sh after_script: - ./scripts/travis/tear_down_browser_provider.sh - ./scripts/travis/print_logs.sh notifications: webhooks: urls: - https://webhooks.gitter.im/e/d2120f3f2bb39a4531b2 - http://104.197.9.155:8484/hubot/travis/activity #hubot-server on_success: always # options: [always|never|change] default: always on_failure: always # options: [always|never|change] default: always on_start: always # default: false angular.js-1.5.10/CHANGELOG.md000066400000000000000000025267371302474057000155030ustar00rootroot00000000000000 # 1.4.13 croaking-elderweed (2016-10-10) ## Bug Fixes - **input:** ensure that hidden input values are correct after history back ([693d1334](https://github.com/angular/angular.js/commit/693d1334566f78987f5a361a100db4f889f35abd) # 1.2.31 barking-moustache (2016-10-10) ## Bug Fixes - **input:** ensure that hidden input values are correct after history back ([7ec663fc](https://github.com/angular/angular.js/commit/7ec663fc708aa7a9a9ce62d2306f24d7a733a86d) # 1.4.12 *Invalid release* # 1.5.8 arbitrary-fallbacks (2016-07-22) ## Bug Fixes - **$animate:** do not get affected by custom, enumerable properties on `Object.prototype` ([181e4401](https://github.com/angular/angular.js/commit/181e44019e850e5253378e29415cddf8d768bbef), [#14804](https://github.com/angular/angular.js/issues/14804), [#14830](https://github.com/angular/angular.js/issues/14830)) - **$compile:** ensure `$doCheck` hooks can be defined in the controller constructor ([3010ed4e](https://github.com/angular/angular.js/commit/3010ed4ee5c2c18b9848b5664639971b9fdc8919), [#14811](https://github.com/angular/angular.js/issues/14811)) - **$injector:** fix class detection RegExp ([4724d56c](https://github.com/angular/angular.js/commit/4724d56c939d02675433e7fe554608dff97ecf81), [#14533](https://github.com/angular/angular.js/issues/14533)) - **$jsonpCallbacks:** do not overwrite callbacks added by other apps ([1778d347](https://github.com/angular/angular.js/commit/1778d347cd3c91335e3840eaa49f1e387db8602f), [#14824](https://github.com/angular/angular.js/issues/14824)) - **$timeout:** make $flush handle new $timeouts added in $timeout callbacks ([1a387ba5](https://github.com/angular/angular.js/commit/1a387ba5dd1a8a831486fce23f6795bd1eef3d8b), [#5420](https://github.com/angular/angular.js/issues/5420), [#14686](https://github.com/angular/angular.js/issues/14686)) - **copy:** fix handling of typed subarrays ([1645924d](https://github.com/angular/angular.js/commit/1645924d49a7905ce55cced4c4276654970bb226), [#14842](https://github.com/angular/angular.js/issues/14842), [#14845](https://github.com/angular/angular.js/issues/14845)) - **modules:** allow modules to be loaded in any order when using `angular-loader` ([98e4a220](https://github.com/angular/angular.js/commit/98e4a220fe8301cec35498ae592adc0266f12437), [#9140](https://github.com/angular/angular.js/issues/9140), [#14794](https://github.com/angular/angular.js/issues/14794)) - **ngAnimate:** allow removal of class that is scheduled to be added with requestAnimationFrame ([7ccfe92b](https://github.com/angular/angular.js/commit/7ccfe92bed7361832f1b8d25b1a8411eb24d3fb5), [#14582](https://github.com/angular/angular.js/issues/14582)) - **ngMocks:** allow `ErrorAddingDeclarationLocationStack` to be recognized as an `Error` ([c6074dc3](https://github.com/angular/angular.js/commit/c6074dc34c31a07269bf7f628b971ef6dc805f17), [#13821](https://github.com/angular/angular.js/issues/13821), [#14344](https://github.com/angular/angular.js/issues/14344)) - **ngOptions:** don't duplicate groups with falsy values ([c3bfd7f5](https://github.com/angular/angular.js/commit/c3bfd7f59d0ecbf4ba3253fb407e683c7bb0766c)) - **ngTransclude:** - ensure that fallback content is compiled and linked correctly ([c405f88b](https://github.com/angular/angular.js/commit/c405f88bbc743f41591f6f3cfc022eea3c6c34ad), [#14787](https://github.com/angular/angular.js/issues/14787)) - only compile fallback content if necessary ([159a68ec](https://github.com/angular/angular.js/commit/159a68ec7ba77e9128b0d0516b813ed3d223b6e3), [#14768](https://github.com/angular/angular.js/issues/14768), [#14765](https://github.com/angular/angular.js/issues/14765), [#14775](https://github.com/angular/angular.js/issues/14775)) ## Features - **$compile:** backport $doCheck ([de59ca71](https://github.com/angular/angular.js/commit/de59ca71072eac95ee68de308f92bc5f921dd07b), [#14656](https://github.com/angular/angular.js/issues/14656)) - **$jsonpCallbacks:** new service to abstract how JSONP callbacks are handled ([a8cacfe9](https://github.com/angular/angular.js/commit/a8cacfe938287c54ce7099125cb735ad53f4c7c2), [#14795](https://github.com/angular/angular.js/issues/14795)) - **$q:** implement $q.race ([b9a56d58](https://github.com/angular/angular.js/commit/b9a56d588f8b597b1dff30d8e184b7c37d94cdcf), [#12929](https://github.com/angular/angular.js/issues/12929), [#14757](https://github.com/angular/angular.js/issues/14757)) - **$resource:** pass the resource to a dynamic param functions ([a126fcfe](https://github.com/angular/angular.js/commit/a126fcfee3bd8b02869bd2542c73e1eb21afe927), [#4899](https://github.com/angular/angular.js/issues/4899)) - **$swipe:** add pointer support ([f797f83c](https://github.com/angular/angular.js/commit/f797f83cd66f1fd11b3c9399e7894217ffa06c38), [#14061](https://github.com/angular/angular.js/issues/14061), [#14791](https://github.com/angular/angular.js/issues/14791)) - **filterFilter:** allow overwriting the special `$` property name ([33514ec3](https://github.com/angular/angular.js/commit/33514ec384d676d84b2a445bc15bae38c8c3ac8d), [#13313](https://github.com/angular/angular.js/issues/13313)) ## Performance Improvements - **$compile:** wrap try/catch of collect comment directives into a function to avoid V8 deopt ([acd45518](https://github.com/angular/angular.js/commit/acd455181de1cfa6b34d75f8d71a6c0b6995a777), [#14848](https://github.com/angular/angular.js/issues/14848)) # 1.2.30 patronal-resurrection (2016-07-21) _**Note:** This release contains some security fixes that required breaking changes. Since the legacy 1.2.x branch is the only version branch that supports IE8, it was necessary to introduce a couple of low-impact breaking changes in a patch release - something we generally avoid - in order to make the fixes available to people that still need IE8 support._ ## Bug Fixes - **$compile:** - secure `link[href]` as a `RESOURCE_URL`s in `$sce` ([f35f334b](https://github.com/angular/angular.js/commit/f35f334bd3197585bdf034f4b6d9ffa3122dac62), [#14687](https://github.com/angular/angular.js/issues/14687)) - properly sanitize `xlink:href` attribute interpolation ([f2fa1ed8](https://github.com/angular/angular.js/commit/f2fa1ed83d18d4e79a36f8c0db1c2524d762e513), [2687c261](https://github.com/angular/angular.js/commit/2687c26140585d9e3716f9f559390f5d8d598fdf)) - **ngSanitize:** blacklist the attribute `usemap` as it can be used as a security exploit ([ac0d5286](https://github.com/angular/angular.js/commit/ac0d5286b8931633d774080d6396fb4825d8be33), [#14903](https://github.com/angular/angular.js/issues/14903)) - **ngAnimate:** do not use event.timeStamp anymore for time tracking ([8d83b563](https://github.com/angular/angular.js/commit/8d83b5633471c847d58f337426fe069797dd49d9), [#13494](https://github.com/angular/angular.js/issues/13494), [#13495](https://github.com/angular/angular.js/issues/13495)) ## Breaking Changes - **$compile:** due to [f35f334b](https://github.com/angular/angular.js/commit/f35f334bd3197585bdf034f4b6d9ffa3122dac62), `link[href]` attributes are now protected via `$sce`, which prevents interpolated values that fail the `RESOURCE_URL` context tests from being used in interpolation. For example if the application is running at `https://mydomain.org/` then the following will fail: ```html ``` By default, `RESOURCE_URL` safe URLs are only allowed from the same domain and protocol as the application document. To use URLs from other domains and/or protocols, you may either whitelist them using `$sceDelegateProvider.resourceUrlWhitelist(...)` or wrap them into a trusted value by calling `$sce.trustAsResourceUrl(url)`. - **ngSanitize:** due to [234053fc](https://github.com/angular/angular.js/commit/234053fc9ad90e0d05be7e8359c6af66be94c094), The `$sanitize` service will now remove instances of the `usemap` attribute from any elements passed to it. This attribute is used to reference another element by `name` or `id`. Since the `name` and `id` attributes are already blacklisted, a sanitized `usemap` attribute could only reference unsanitized content, which is a security risk. # 1.5.7 hexagonal-circumvolution (2016-06-15) ## Bug Fixes - **$compile:** - don't add merged attributes twice to $attrs ([ebbaa4ac](https://github.com/angular/angular.js/commit/ebbaa4ac5e3559df9267203438a0bb18c2d3b7d8), [#8159](https://github.com/angular/angular.js/issues/8159), [#14737](https://github.com/angular/angular.js/issues/14737)) - cope with `$onChanges` hooks throwing ([3749c858](https://github.com/angular/angular.js/commit/3749c85829406ca57cc5729e80696c7f34134068), [#14444](https://github.com/angular/angular.js/issues/14444), [#14463](https://github.com/angular/angular.js/issues/14463)) - **$location:** initialize `$$absUrl` to empty string ([294d6793f](https://github.com/angular/angular.js/commit/294d6793fd0e0781a257e35a165e0c6fde082fe7), [#11091](https://github.com/angular/angular.js/issues/11091), [#13565](https://github.com/angular/angular.js/issues/13565), [#14488](https://github.com/angular/angular.js/issues/14488)) - **$parse:** allow arguments to contain filter chains ([cc6dcb4b](https://github.com/angular/angular.js/commit/cc6dcb4bc28aadff4f62d76d6451b0f80b928e69), [#4175](https://github.com/angular/angular.js/issues/4175), [#4168](https://github.com/angular/angular.js/issues/4168), [#14720](https://github.com/angular/angular.js/issues/14720)) - **$routeProvider:** do not deep-copy route definition objects ([6d0dcca6](https://github.com/angular/angular.js/commit/6d0dcca6f18a353a12c356dc96e05475d351b795), [#14478](https://github.com/angular/angular.js/issues/14478), [#14699](https://github.com/angular/angular.js/issues/14699), [#14750](https://github.com/angular/angular.js/issues/14750)) - **input[email]:** improve email address validation ([f423dc6b](https://github.com/angular/angular.js/commit/f423dc6b51a9b4a09728a287a2cabda7d45f192e), [#14719](https://github.com/angular/angular.js/issues/14719)) - **ngMessages:** create new scope for ngMessage, clean it up correctly ([56f33af8](https://github.com/angular/angular.js/commit/56f33af89045e2ec18d144d9d1ef73affbe51959), [#14307](https://github.com/angular/angular.js/issues/14307)) - **ngMessagesInclude:** don't break on empty (or whitespace-only) templates ([01b8772c](https://github.com/angular/angular.js/commit/01b8772cca55916376355a2ae58d3ab7832a4bc2), [#12941](https://github.com/angular/angular.js/issues/12941), [#14726](https://github.com/angular/angular.js/issues/14726)) - **ngMock#$controller:** properly assign bindings to all types of controllers (e.g. class-based) ([db58801a](https://github.com/angular/angular.js/commit/db58801a55c91df755414387dc00fee5902bb5f3), [#14437](https://github.com/angular/angular.js/issues/14437), [#14439](https://github.com/angular/angular.js/issues/14439)) - **ngMockE2E:** allow $httpBackend.passThrough() to work when ngMock is loaded ([6685043a](https://github.com/angular/angular.js/commit/6685043ad40acc50d7088f87e2a71f76d2265306), [#1434](https://github.com/angular/angular.js/issues/1434), [#13124](https://github.com/angular/angular.js/issues/13124)) - **ngSanitize:** call attribute setter in linky for all links ([c4fad6ad](https://github.com/angular/angular.js/commit/c4fad6ad617af025984ca401054f7b402aa28f1d), [#14707](https://github.com/angular/angular.js/issues/14707)) ## Features - **limitTo:** add support for array-like objects ([b03957f0](https://github.com/angular/angular.js/commit/b03957f0047fcfe996abc8efe97f9e2be2c2e13a), [#14657](https://github.com/angular/angular.js/issues/14657), [#14694](https://github.com/angular/angular.js/issues/14694)) - **orderBy:** add support for custom comparators ([2e33d170](https://github.com/angular/angular.js/commit/2e33d170be7eb72f40fd57a8f66631583572fbf2), [#13238](https://github.com/angular/angular.js/issues/13238), [#14455](https://github.com/angular/angular.js/issues/14455), [#5123](https://github.com/angular/angular.js/issues/5123), [#8112](https://github.com/angular/angular.js/issues/8112), [#10368](https://github.com/angular/angular.js/issues/10368), [#14468](https://github.com/angular/angular.js/issues/14468)) # 1.5.6 arrow-stringification (2016-05-27) ## Bug Fixes - **$browser:** set the url even if the browser transforms it ([743b33ab](https://github.com/angular/angular.js/commit/743b33ab9d8cdb8aa6ff28028a54ac0023f4dc15), [#14427](https://github.com/angular/angular.js/issues/14427), [#14499](https://github.com/angular/angular.js/issues/14499)) - **$compile:** - properly bind context to linking functions for directives with `templateUrl` ([5ae72dc7](https://github.com/angular/angular.js/commit/5ae72dc7affb252774b7c4cbf278269c5e178f38)) - always use the DDO as `this` in pre-/post-linking functions ([47bc98a1](https://github.com/angular/angular.js/commit/47bc98a1eafd7853babc1a7dc54f13363a3f4a43), [#9306](https://github.com/angular/angular.js/issues/9306)) - don't run unnecessary update to one-way bindings ([30479647](https://github.com/angular/angular.js/commit/304796471292f9805b9cf77e51aacc9cfbb09921), [#14546](https://github.com/angular/angular.js/issues/14546), [#14580](https://github.com/angular/angular.js/issues/14580)) - removing unnecessary white space in element-transclusion comments ([1116a96d](https://github.com/angular/angular.js/commit/1116a96df662c95aa83ab527c479b644a14532b6), [#14549](https://github.com/angular/angular.js/issues/14549), [#14550](https://github.com/angular/angular.js/issues/14550)) - properly handle setting `srcset` to undefined ([308f22ba](https://github.com/angular/angular.js/commit/308f22ba9a803967ce84c995d810990c80478f6f), [#14470](https://github.com/angular/angular.js/issues/14470), [#14493](https://github.com/angular/angular.js/issues/14493)) - **$injector:** - add workaround for class stringification in Chrome v50/51 ([7550b7bd](https://github.com/angular/angular.js/commit/7550b7bda8d992cc6ed3c65b1f9f7e323a09cae4), [#14531](https://github.com/angular/angular.js/issues/14531)) - add workaround for fat-arrow stringification in Chrome v50/51 ([bb730704](https://github.com/angular/angular.js/commit/bb730704f2f3dea4620e7b40083dcd65f208e2b2), [#14487](https://github.com/angular/angular.js/issues/14487), [#14495](https://github.com/angular/angular.js/issues/14495)) - **$templateRequest:** trust empty templates in `$templateCache` as well ([10955969](https://github.com/angular/angular.js/commit/10955969620248bd31a0bd37bc9fd7cc3b1f5e88), [#14479](https://github.com/angular/angular.js/issues/14479), [#14496](https://github.com/angular/angular.js/issues/14496)) - **filters:** always call `splice()` with 2 arguments or more ([6f1fae8a](https://github.com/angular/angular.js/commit/6f1fae8a916cc6f26725f64869f86fcd4991e819), [#14467](https://github.com/angular/angular.js/issues/14467), [#14489](https://github.com/angular/angular.js/issues/14489)) - **ng-bind-html:** watch the unwrapped value using `$sce.valueOf()` (instead of `toString()`) ([1c1c9b27](https://github.com/angular/angular.js/commit/1c1c9b27cbb57b3219d4c9765eeea8a11553d297), [#14526](https://github.com/angular/angular.js/issues/14526), [#14527](https://github.com/angular/angular.js/issues/14527)) - **ngAnimate:** - don't break on anchored animations without duration ([21b76aed](https://github.com/angular/angular.js/commit/21b76aed06d9cc04bd25a99c23ba852af782b357), [#14641](https://github.com/angular/angular.js/issues/14641), [#14645](https://github.com/angular/angular.js/issues/14645)) - properly handle empty jqLite collections ([9f480257](https://github.com/angular/angular.js/commit/9f4802573348401ee24090f815f3138fa17c161d), [#14558](https://github.com/angular/angular.js/issues/14558), [#14559](https://github.com/angular/angular.js/issues/14559)) - **ngMessages:** do not compile ngMessagesInclude template if scope is destroyed ([69d9072d](https://github.com/angular/angular.js/commit/69d9072d5b5aba988ac8a9717c92ce1fac465cbe), [#12695](https://github.com/angular/angular.js/issues/12695), [#14640](https://github.com/angular/angular.js/issues/14640)) - **ngMock:** - match HTTP request regardless of the order of query params ([363fb16c](https://github.com/angular/angular.js/commit/363fb16c1076a806bb31006daaf583ab5c82e467), [#12762](https://github.com/angular/angular.js/issues/12762)) - pass eventHandlers to $httpBackend if passThrough is active ([147650b3](https://github.com/angular/angular.js/commit/147650b3beae7ad8b556a930129887d187a0f5d3), [#14471](https://github.com/angular/angular.js/issues/14471)) ## Features - **$compile:** support omitting required controller name if same as the local name ([8965d57a](https://github.com/angular/angular.js/commit/8965d57aa0788c96859cf3cfa0f78b46d2cebedb), [#14513](https://github.com/angular/angular.js/issues/14513)) - **$parse:** Add support for ES6 object initializers ([1c9b9e24](https://github.com/angular/angular.js/commit/1c9b9e24ede7efc10ce4d53c6ab5528cc77e79d7)) ## Performance Improvements - **$rootScope:** make queues more efficient ([51b78f61](https://github.com/angular/angular.js/commit/51b78f61f954d94dc937f57190c9f881df9ab3ad), [#14545](https://github.com/angular/angular.js/issues/14545)) - **ngAnimate:** listen for document visibility changes ([b377d6b0](https://github.com/angular/angular.js/commit/b377d6b043db9c8da4e68493892f75a0f9759464), [#14568](https://github.com/angular/angular.js/issues/14568)) - **ngClass:** improve even-odd checking ([cf1b1755](https://github.com/angular/angular.js/commit/cf1b175508a72d4b7e3d64b8506903096c6ec25f)) # 1.5.5 material-conspiration (2016-04-18) ## Reverts - **$compile:** move setting of controller data to single location Reverted commit [21d148ae](https://github.com/angular/angular.js/commit/21d148aedc29c7efba4131ff2ef6383b4700868c) since it caused the Angular Material tabs directive to fail. - **ngRoute:** allow `ngView` to be included in an asynchronously loaded template Eagerly loading `$route`, could break tests, because it might request the root or default route template (something `$httpBackend` would know nothing about). It will be re-applied for `v1.6.x`, with a breaking change notice and possibly a way to disable the feature in tests. ([8237482d](https://github.com/angular/angular.js/commit/8237482d49e76e2c4994fe6207e3c9799ef04163), [#1213](https://github.com/angular/angular.js/issues/1213), [#6812](https://github.com/angular/angular.js/issues/6812), [#14088](https://github.com/angular/angular.js/issues/14088)) ## Bug Fixes - **$compile:** - do not use `noop()` as controller for multiple components ([4c8aeefb](https://github.com/angular/angular.js/commit/4c8aeefb624de7436ad95f3cd525405e0c3f493e), [#14391](https://github.com/angular/angular.js/issues/14391), [#14402](https://github.com/angular/angular.js/issues/14402)) - still trigger `$onChanges` even if the inner value already matches the new value ([d9448dcb](https://github.com/angular/angular.js/commit/d9448dcb9f901ceb04deda1d5f3d5aac8442a718), [#14406](https://github.com/angular/angular.js/issues/14406)) - handle boolean attributes in `@` bindings ([499e1b2a](https://github.com/angular/angular.js/commit/499e1b2adf27f32d671123f8dceadb3df2ad84a9), [#14070](https://github.com/angular/angular.js/issues/14070)) - don't throw if controller is named ([e72990dc](https://github.com/angular/angular.js/commit/e72990dc3714c8b847185ddb64fd5fd00e5cceab)) - ensure that `$onChanges` hook is called correctly ([0ad2b708](https://github.com/angular/angular.js/commit/0ad2b70862d49ecc4355a16d767c0ca9358ecc3e), [#14355](https://github.com/angular/angular.js/issues/14355), [#14359](https://github.com/angular/angular.js/issues/14359)) - **$injector:** ensure functions with overridden `toString()` are annotated properly ([d384834f](https://github.com/angular/angular.js/commit/d384834fdee140a716298bd065f304f8fba4725e), [#14361](https://github.com/angular/angular.js/issues/14361)) - **ngAnimate:** - remove event listeners only after all listeners have been called ([79604f46](https://github.com/angular/angular.js/commit/79604f462899c118a99d610995083ff82d38aa35), [#14321](https://github.com/angular/angular.js/issues/14321)) - fire callbacks when document is hidden ([c7a92d2a](https://github.com/angular/angular.js/commit/c7a92d2a9a436dddd65de721c9837a93e915d939), [#14120](https://github.com/angular/angular.js/issues/14120)) - fire callbacks in the correct order for certain skipped animations ([90da3059](https://github.com/angular/angular.js/commit/90da3059cecfefaecf136b01cd87aee6775a8778)) - **ngClass:** fix watching of an array expression containing an object ([f975d8d4](https://github.com/angular/angular.js/commit/f975d8d4481e0b8cdba553f0e5ad9ec1688adae8), [#14405](https://github.com/angular/angular.js/issues/14405)) - **ngMock:** fix collecting stack trace in `inject()` on IE10+, PhantomJS ([e9c718a4](https://github.com/angular/angular.js/commit/e9c718a465d28b9f2691e3acab944f7c31aa9fb6), [#13591](https://github.com/angular/angular.js/issues/13591), [#13592](https://github.com/angular/angular.js/issues/13592), [#13593](https://github.com/angular/angular.js/issues/13593)) - **ngOptions:** set select value when model matches disabled option ([832eba5f](https://github.com/angular/angular.js/commit/832eba5fc952312e6b99127123e6e75bdf729006), [#12756](https://github.com/angular/angular.js/issues/12756)) - **$http:** pass event object to `eventHandlers`/`uploadEventHandlers` ([25d4e5cc](https://github.com/angular/angular.js/commit/25d4e5cca4fa615e49d65976223c6deb5b485b4c), [#14436](https://github.com/angular/angular.js/issues/14436)) ## Features - **$compile:** - put custom annotations on DDO ([f338e96c](https://github.com/angular/angular.js/commit/f338e96ccc739efc4b24022eae406c3d5451d422), [#14369](https://github.com/angular/angular.js/issues/14369), [#14279](https://github.com/angular/angular.js/issues/14279), [#14284](https://github.com/angular/angular.js/issues/14284)) - add `isFirstChange()` method to onChanges object ([8d43d8b8](https://github.com/angular/angular.js/commit/8d43d8b8e7aacf97ddb9aa48bff25db57249cdd5), [#14318](https://github.com/angular/angular.js/issues/14318), [#14323](https://github.com/angular/angular.js/issues/14323)) - **$componentController:** provide isolated scope if none is passed (#14425) ([33f817b9](https://github.com/angular/angular.js/commit/33f817b99cb20e566b381e7202235fe99b4a742a), [#14425](https://github.com/angular/angular.js/issues/14425)) - **$http:** - support handling additional XHR events ([01b18450](https://github.com/angular/angular.js/commit/01b18450882da9bb9c903d43c0daddbc03c2c35d) and [56c861c9](https://github.com/angular/angular.js/commit/56c861c9e114c45790865e5635eaae8d32eb649a), [#14367](https://github.com/angular/angular.js/issues/14367), [#11547](https://github.com/angular/angular.js/issues/11547), [#1934](https://github.com/angular/angular.js/issues/1934)) - **$parse:** add the ability to define the identifier characters ([3e7fa191](https://github.com/angular/angular.js/commit/3e7fa19197c54a764225ad27c0c0bf72263daa8d)) - **ngAnimate:** let $animate.off() remove all listeners for an element ([bf6cb8ab](https://github.com/angular/angular.js/commit/bf6cb8ab0d157083a1ed55743e3fffe728daa6f3)) - **ngAria:** add support for aria-readonly based on ngReadonly ([ec0baadc](https://github.com/angular/angular.js/commit/ec0baadcb68a4fa8da27d76b7e6a4e0840acd7fa), [#14140](https://github.com/angular/angular.js/issues/14140), [#14077](https://github.com/angular/angular.js/issues/14077)) - **ngParseExt:** new ngParseExt module ([d08f5c69](https://github.com/angular/angular.js/commit/d08f5c698624f6243685b16f2d458cb9a980ebde)) ## Performance Improvements - **$compile:** use createMap() for directive bindings to allow fast `forEach` ([c115b37c](https://github.com/angular/angular.js/commit/c115b37c336f3a5936187279057b29c76078caf2), [#12529](https://github.com/angular/angular.js/issues/12529)) - **ngOptions:** use `documentFragment` to populate `select` options ([6a4124d0](https://github.com/angular/angular.js/commit/6a4124d0fb17cd7fc0e8bf5a1ca4d785a1d11c1c), [#13607](https://github.com/angular/angular.js/issues/13607), [#13239](https://github.com/angular/angular.js/issues/13239), [#12076](https://github.com/angular/angular.js/issues/12076)) # 1.5.4 graduated-sophistry (2016-04-14) This was a partially published release that you should ignore. # 1.5.3 diplohaplontic-meiosis (2016-03-25) ## Bug Fixes - **$compile:** workaround a GC bug in Chrome < 50 ([513199ee](https://github.com/angular/angular.js/commit/513199ee9f1c8eef1240983d6e52c824404adb98), [#14041](https://github.com/angular/angular.js/issues/14041), [#14286](https://github.com/angular/angular.js/issues/14286)) - **$sniffer:** fix history sniffing in Chrome Packaged Apps ([457fd21a](https://github.com/angular/angular.js/commit/457fd21a1a0c10c66245c32a73602f3a09038bda), [#11932](https://github.com/angular/angular.js/issues/11932), [#13945](https://github.com/angular/angular.js/issues/13945)) - **formatNumber:** handle small numbers correctly when `gSize` !== `lgSize` ([3277b885](https://github.com/angular/angular.js/commit/3277b885c4dec3edd51b8e8c3d1776057d6d4d1d), [#14289](https://github.com/angular/angular.js/issues/14289), [#14290](https://github.com/angular/angular.js/issues/14290)) - **ngAnimate:** run structural animations with cancelled out class changes ([c7813e9e](https://github.com/angular/angular.js/commit/c7813e9ebf793fe89380dcad54e8e002fafdd985), [#14249](https://github.com/angular/angular.js/issues/14249)) - **ngMessages:** don't crash when nested messages are removed ([ef91b04c](https://github.com/angular/angular.js/commit/ef91b04cdd794f308617bca7ebd0b1b747e4f7de), [#14183](https://github.com/angular/angular.js/issues/14183), [#14242](https://github.com/angular/angular.js/issues/14242)) ## Features - **$compile:** add more lifecycle hooks to directive controllers ([9cd9956d](https://github.com/angular/angular.js/commit/9cd9956dcbc8382e8e8757a805398bd251bbc67e), [#14127](https://github.com/angular/angular.js/issues/14127), [#14030](https://github.com/angular/angular.js/issues/14030), [#14020](https://github.com/angular/angular.js/issues/14020), [#13991](https://github.com/angular/angular.js/issues/13991), [#14302](https://github.com/angular/angular.js/issues/14302)) # 1.5.2 differential-recovery (2016-03-18) This release reverts a breaking change that accidentally made it into the 1.5.1 release. See [fee7bac3](https://github.com/angular/angular.js/commit/fee7bac392db24b6006d6a57ba71526f3afa102c) for more info. ## Bug Fixes - **ngAnimate.$animate:** remove animation callbacks when the element is removed ([ce7f4000](https://github.com/angular/angular.js/commit/ce7f400011e1e2e1b9316f18ce87b87b79d878b4)) # 1.5.1 equivocal-sophistication (2016-03-16) ## Bug Fixes - **core:** only call `console.log` when `window.console` exists ([ce138f3c](https://github.com/angular/angular.js/commit/ce138f3c552f8bf741721ab8d10994ed35a4b2f5), [#14006](https://github.com/angular/angular.js/issues/14006), [#14007](https://github.com/angular/angular.js/issues/14007), [#14047](https://github.com/angular/angular.js/issues/14047)) - **$compile:** allow directives to have decorators ([0728cc2f](https://github.com/angular/angular.js/commit/0728cc2f2bb04d5dbdfca41f3afacea16c75ee07)) - **$resource:** fix parse errors on older Android WebViews ([df8db7b4](https://github.com/angular/angular.js/commit/df8db7b446b5bae83afef457d706d2805e597f29), [#13989](https://github.com/angular/angular.js/issues/13989)) - **$routeProvider:** properly handle optional eager path named groups ([c0797c68](https://github.com/angular/angular.js/commit/c0797c68866c9ef8ff3c2f6985e6eb9374346151), [#14011](https://github.com/angular/angular.js/issues/14011)) - **copy:** add support for copying `Blob` objects ([e9d579b6](https://github.com/angular/angular.js/commit/e9d579b608c2be8fdcf0326d0679a76bb9ae5b6e), [#9669](https://github.com/angular/angular.js/issues/9669), [#14064](https://github.com/angular/angular.js/issues/14064)) - **dateFilter:** correctly format BC years ([e36205f5](https://github.com/angular/angular.js/commit/e36205f5af82b69362def7d2b6eeeb038f592311)) - **formatNumber:** allow negative fraction size ([e046c170](https://github.com/angular/angular.js/commit/e046c170bcf677f26e61af6470cb5fd2f751c969), [#13913](https://github.com/angular/angular.js/issues/13913)) - **input:** re-validate when partially editing date-family inputs ([e383804c](https://github.com/angular/angular.js/commit/e383804c4ab62278fbaf4fdfaa03caeacff77fc4), [#12207](https://github.com/angular/angular.js/issues/12207), [#13886](https://github.com/angular/angular.js/issues/13886)) - **input\[date\]:** support years with more than 4 digits ([d76951f1](https://github.com/angular/angular.js/commit/d76951f1747abd2da6e320d4ff9019f170d9793f), [#13735](https://github.com/angular/angular.js/issues/13735), [#13905](https://github.com/angular/angular.js/issues/13905)) - **ngOptions:** always set the 'selected' attribute for selected options ([9f5a1722](https://github.com/angular/angular.js/commit/9f5a172291ff6926dcd246f0972288916a4c9bf6), [#14115](https://github.com/angular/angular.js/issues/14115)) - **ngRoute:** allow `ngView` to be included in an asynchronously loaded template ([8237482d](https://github.com/angular/angular.js/commit/8237482d49e76e2c4994fe6207e3c9799ef04163), [#1213](https://github.com/angular/angular.js/issues/1213), [#6812](https://github.com/angular/angular.js/issues/6812), [#14088](https://github.com/angular/angular.js/issues/14088)) - **ngMock:** - attach `$injector` to `$rootElement` and prevent memory leak due to attached data ([75373dd4](https://github.com/angular/angular.js/commit/75373dd4bdae6c6035272942c69444c386f824cd), [#14022](https://github.com/angular/angular.js/issues/14022), [#14094](https://github.com/angular/angular.js/issues/14094), [#14098](https://github.com/angular/angular.js/issues/14098)) - don't break if `$rootScope.$destroy()` is not a function ([50ed8712](https://github.com/angular/angular.js/commit/50ed8712566d601c9fb76b71f7b534b5bc803a36), [#14106](https://github.com/angular/angular.js/issues/14106), [#14107](https://github.com/angular/angular.js/issues/14107)) - **ngMockE2E:** pass `responseType` to `$delegate` when using `passThrough` ([d16faf9f](https://github.com/angular/angular.js/commit/d16faf9f2b9bd2b85d95e71d902cec0269282f2c), [#5415](https://github.com/angular/angular.js/issues/5415), [#5783](https://github.com/angular/angular.js/issues/5783)) ## Features - **$compile:** add custom annotations to the controller ([0c800930](https://github.com/angular/angular.js/commit/0c8009300b819c39c5e4892856724a731a8dcda6), [#14114](https://github.com/angular/angular.js/issues/14114)) - **$controllerProvider:** add a `has()` method for checking the existence of a controller ([bb9575db](https://github.com/angular/angular.js/commit/bb9575dbd3428176216355df7b2933d2a72783cd), [#13951](https://github.com/angular/angular.js/issues/13951), [#14109](https://github.com/angular/angular.js/issues/14109)) - **dateFilter:** add support for STANDALONEMONTH in format (`LLLL`) ([3e5b25b3](https://github.com/angular/angular.js/commit/3e5b25b33f278376def432698c704b1807fdb8c0), [#13999](https://github.com/angular/angular.js/issues/13999), [#14013](https://github.com/angular/angular.js/issues/14013)) - **ngMock:** add `sharedInjector()` to `angular.mock.module` ([a46ab60f](https://github.com/angular/angular.js/commit/a46ab60fd5bf94896f0761e858ef38b998eb0f80), [#14093](https://github.com/angular/angular.js/issues/14093), [#10238](https://github.com/angular/angular.js/issues/10238)) ## Performance Improvements - **ngRepeat:** avoid duplicate jqLite wrappers ([632e15a3](https://github.com/angular/angular.js/commit/632e15a3afdcd30168700cec1367bd81966400d4)) - **ngAnimate:** - avoid jqLite/jQuery for upward DOM traversal ([35251bd4](https://github.com/angular/angular.js/commit/35251bd4ce23251b5e9a2860cf414726c194721e)) - avoid `$.fn.data` overhead with jQuery ([15915e60](https://github.com/angular/angular.js/commit/15915e606fdf5114592db1a0a5e3f12e639d7cdb)) # 1.4.10 benignant-oscillation (2016-03-16) ## Bug Fixes - **core:** only call `console.log` when `window.console` exists ([beb00e44](https://github.com/angular/angular.js/commit/beb00e44de947981dbe35d5cf7a116e10ea8dc67), [#14006](https://github.com/angular/angular.js/issues/14006), [#14007](https://github.com/angular/angular.js/issues/14007), [#14047](https://github.com/angular/angular.js/issues/14047)) - **$animateCss:** cancel fallback timeout when animation ends normally ([a60bbc12](https://github.com/angular/angular.js/commit/a60bbc12e8c5170e70d95f1b2c3e309b3b95cb84), [#13787](https://github.com/angular/angular.js/issues/13787)) - **$compile:** - allow directives to have decorators ([77cdc37c](https://github.com/angular/angular.js/commit/77cdc37c65491b551fcf01a18ab848a693c293d7)) - properly denormalize templates when only one of the start/end symbols is different ([2d44a681](https://github.com/angular/angular.js/commit/2d44a681eb912a81a8bc8e16a278c45dae91fa24), [#13848](https://github.com/angular/angular.js/issues/13848)) - handle boolean attributes in `@` bindings ([2ffbfb0a](https://github.com/angular/angular.js/commit/2ffbfb0ad0647d103ff339ee4b772b62d4823bf3), [#13767](https://github.com/angular/angular.js/issues/13767), [#13769](https://github.com/angular/angular.js/issues/13769)) - **$parse:** - prevent assignment on constructor properties ([f47e2180](https://github.com/angular/angular.js/commit/f47e218006029f39b4785d820b430de3a0eebcb0), [#13417](https://github.com/angular/angular.js/issues/13417)) - preserve expensive checks when running `$eval` inside an expression ([96d62cc0](https://github.com/angular/angular.js/commit/96d62cc0fc77248d7e3ec4aa458bac0d3e072629)) - copy `inputs` for expressions with expensive checks ([0b7fff30](https://github.com/angular/angular.js/commit/0b7fff303f46202bbae1ff3ca9d0e5fa76e0fc9a)) - **$rootScope:** set no context when calling helper functions for `$watch` ([ab5c7698](https://github.com/angular/angular.js/commit/ab5c7698bb106669ca31b5f79a95afa54d65c5f1)) - **$route:** allow preventing a route reload ([4bc30314](https://github.com/angular/angular.js/commit/4bc3031497447ad527356f12bd0ceee1d7d09db5), [#9824](https://github.com/angular/angular.js/issues/9824), [#13894](https://github.com/angular/angular.js/issues/13894)) - **$routeProvider:** properly handle optional eager path named groups ([6a4403a1](https://github.com/angular/angular.js/commit/6a4403a11845173d6a96232f77d73aa544b182af), [#14011](https://github.com/angular/angular.js/issues/14011)) - **copy:** add support for copying `Blob` objects ([863a4232](https://github.com/angular/angular.js/commit/863a4232a6faa92428df45cd54d5a519be2434de), [#9669](https://github.com/angular/angular.js/issues/9669), [#14064](https://github.com/angular/angular.js/issues/14064)) - **dateFilter:** follow the CLDR on pattern escape sequences ([f476060d](https://github.com/angular/angular.js/commit/f476060de6cc016380c0343490a184543f853652), [#12839](https://github.com/angular/angular.js/issues/12839)) - **dateFilter, input:** fix Date parsing in IE/Edge when timezone offset contains `:` ([571afd65](https://github.com/angular/angular.js/commit/571afd6558786d7b99e2aebd307b4a94c9f2bb87), [#13880](https://github.com/angular/angular.js/issues/13880), [#13887](https://github.com/angular/angular.js/issues/13887)) - **input:** re-validate when partially editing date-family inputs ([02929f82](https://github.com/angular/angular.js/commit/02929f82f30449301ff18fea84a6396a017683b1), [#12207](https://github.com/angular/angular.js/issues/12207), [#13886](https://github.com/angular/angular.js/issues/13886)) - **select:** handle corner case of adding options via a custom directive ([df6e7315](https://github.com/angular/angular.js/commit/df6e731506831a3dc7f44c9a90abe17515450b3e), [#13874](https://github.com/angular/angular.js/issues/13874), [#13878](https://github.com/angular/angular.js/issues/13878)) - **ngOptions:** always set the 'selected' attribute for selected options ([f87e8288](https://github.com/angular/angular.js/commit/f87e8288fb69526fd240a66a046f5de52ed204de), [#14115](https://github.com/angular/angular.js/issues/14115)) - **ngAnimate:** properly cancel previously running class-based animations ([3b27dd37](https://github.com/angular/angular.js/commit/3b27dd37a2cc8a52992784ece6b371023dadf792), [#10156](https://github.com/angular/angular.js/issues/10156), [#13822](https://github.com/angular/angular.js/issues/13822)) - **ngAnimateChildren:** make it compatible with `ngIf` ([dc158e7e](https://github.com/angular/angular.js/commit/dc158e7e40624ef94c66560386522ef7e991a9ce), [#13865](https://github.com/angular/angular.js/issues/13865), [#13876](https://github.com/angular/angular.js/issues/13876)) - **ngMockE2E:** pass `responseType` to `$delegate` when using `passThrough` ([947cb4d1](https://github.com/angular/angular.js/commit/947cb4d1451afa4f5090a693df5b1968dd0df70c), [#5415](https://github.com/angular/angular.js/issues/5415), [#5783](https://github.com/angular/angular.js/issues/5783)) ## Features - **$locale:** Include original locale ID in $locale ([e69f3550](https://github.com/angular/angular.js/commit/e69f35507e10c994708ce4f1efba7573951d1acd), [#13390](https://github.com/angular/angular.js/issues/13390)) - **ngAnimate:** provide ng-[event]-prepare class for structural animations ([796f7ab4](https://github.com/angular/angular.js/commit/796f7ab41487e124b5b0c02dbf0a03bd581bf073)) ## Performance Improvements - **$compile:** avoid needless overhead when wrapping text nodes ([946d9ae9](https://github.com/angular/angular.js/commit/946d9ae90bb31fe911ebbe1b80cd4c8af5a665c6)) - **ngRepeat:** avoid duplicate jqLite wrappers ([d04c38c4](https://github.com/angular/angular.js/commit/d04c38c48968db777c3ea6a177ce2ff0116df7b4)) - **ngAnimate:** - avoid jqLite/jQuery for upward DOM traversal ([ab95ba65](https://github.com/angular/angular.js/commit/ab95ba65c08b38cace83de6717b7681079182b45)) - avoid `$.fn.data` overhead with jQuery ([86416bcb](https://github.com/angular/angular.js/commit/86416bcbee2192fa31c017163c5d856763182ade)) # 1.5.0 ennoblement-facilitation (2016-02-05) ## Bug Fixes - **$parse:** Copy `inputs` for expressions with expensive checks ([37cb9ad4](https://github.com/angular/angular.js/commit/37cb9ad43619e2b14055b3105a954f4474cd933c)) - **$rootScope:** Set no `this` context when calling helper functions for `$watch` ([1c6edd41](https://github.com/angular/angular.js/commit/1c6edd416b4baad0c8b01148f429eb78e0ad7eaa)) - **$route:** allow route reload to be prevented ([2f0a50b5](https://github.com/angular/angular.js/commit/2f0a50b526c5d0263879d3e845866e1af6fd9791), [#9824](https://github.com/angular/angular.js/issues/9824), [#13894](https://github.com/angular/angular.js/issues/13894)) - **dateFilter, input:** fix Date parsing in IE/Edge when timezone offset contains `:` ([622c4216](https://github.com/angular/angular.js/commit/622c42169699ec07fc6daaa19fe6d224e5d2f70e), [#13880](https://github.com/angular/angular.js/issues/13880), [#13887](https://github.com/angular/angular.js/issues/13887)) - **ngAnimateChildren:** make it compatible with `ngIf` ([8aecf46a](https://github.com/angular/angular.js/commit/8aecf46ad2b3324dd504a8083a61d5bf18d870ed), [#13865](https://github.com/angular/angular.js/issues/13865), [#13876](https://github.com/angular/angular.js/issues/13876)) - **ngAria:** Apply ARIA attrs correctly ([d06431e5](https://github.com/angular/angular.js/commit/d06431e5309bb0125588877451dc79b935808134), [#13078](https://github.com/angular/angular.js/issues/13078), [#11374](https://github.com/angular/angular.js/issues/11374), [#11830](https://github.com/angular/angular.js/issues/11830), [#13483](https://github.com/angular/angular.js/issues/13483)) - **select:** handle the corner case of adding options via a custom directive ([ca5b27bd](https://github.com/angular/angular.js/commit/ca5b27bd0b5243a25730be672c35dfed8ca1d28d), [#13874](https://github.com/angular/angular.js/issues/13874), [#13878](https://github.com/angular/angular.js/issues/13878)) ## Features - **$compile:** add one-way binding to the isolate scope definition ([4ac23c0a](https://github.com/angular/angular.js/commit/4ac23c0ac59c269d65b7f78efec75d060121bd18), [#13928](https://github.com/angular/angular.js/issues/13928), [#13854](https://github.com/angular/angular.js/issues/13854), [#12835](https://github.com/angular/angular.js/issues/12835), [#13900](https://github.com/angular/angular.js/issues/13900)) ## Breaking Changes ### Upgrade to 1.5.1 This version of AngularJS is problematic due to a issue during its release. Please upgrade to version [1.5.2](#1.5.2). - **ngAria:** due to [d06431e5](https://github.com/angular/angular.js/commit/d06431e5309bb0125588877451dc79b935808134), Where appropriate, ngAria now applies ARIA to custom controls only, not native inputs. Because of this, support for `aria-multiline` on textareas has been removed. # 1.5.0-rc.2 controller-requisition (2016-01-28) ## Deprecation Warning - The `ngTouch` module's `ngClick` directive has been deprecated and disabled by default. See the breaking changes section for more information ## Bug Fixes - **$compile:** - properly denormalize templates when only one of the start/end symbols is different ([8348365d](https://github.com/angular/angular.js/commit/8348365df9b9e2d4c9c8d5211e3424d4b9a29767), [#13848](https://github.com/angular/angular.js/issues/13848)) - handle boolean attributes in `@` bindings ([db5e0ffe](https://github.com/angular/angular.js/commit/db5e0ffe124ac588f01ef0fe79efebfa72f5eec7), [#13767](https://github.com/angular/angular.js/issues/13767), [#13769](https://github.com/angular/angular.js/issues/13769)) - **$parse:** Preserve expensive checks when running $eval inside an expression ([acfda102](https://github.com/angular/angular.js/commit/acfda1022d23ecaea34bbc8931588a0715b3ab03)) - **dateFilter:** follow the CLDR on pattern escape sequences ([1ab4e444](https://github.com/angular/angular.js/commit/1ab4e44443716c33cd857dcb1098d20580dbb0cc), [#12839](https://github.com/angular/angular.js/issues/12839)) - **ngAnimate:** - cancel fallback timeout when animation ends normally ([e9c406b2](https://github.com/angular/angular.js/commit/e9c406b2464614c9784f7324d8910180c81c38a7), [#13787](https://github.com/angular/angular.js/issues/13787)) - correctly handle `$animate.pin()` host elements ([7700e2df](https://github.com/angular/angular.js/commit/7700e2df096cf50dfdf84841cab7e2d24d2eb96d), [#13783](https://github.com/angular/angular.js/issues/13783)) - properly cancel-out previously running class-based animations ([20b8ece4](https://github.com/angular/angular.js/commit/20b8ece444408a64ac69f7b5d45ddb3af0c418a0), [#10156](https://github.com/angular/angular.js/issues/10156), [#13822](https://github.com/angular/angular.js/issues/13822)) - ensure that animate promises resolve when the document is hidden ([52ea4110](https://github.com/angular/angular.js/commit/52ea4110d33b7de2845a698913682a03365aa074)) - do not trigger animations if the document is hidden ([a3a7afd3](https://github.com/angular/angular.js/commit/a3a7afd3aa70d981b0210088df53fa2cf68d3a3d), [#12842](https://github.com/angular/angular.js/issues/12842), [#13776](https://github.com/angular/angular.js/issues/13776)) - **ngSanitize:** blacklist the attribute `usemap` as it can be used as a security exploit ([234053fc](https://github.com/angular/angular.js/commit/234053fc9ad90e0d05be7e8359c6af66be94c094)) - **ngTouch:** deprecate ngClick and disable it by default ([0dfc1dfe](https://github.com/angular/angular.js/commit/0dfc1dfebf26af7f951f301c4e3848ac46f05d7f), [#4030](https://github.com/angular/angular.js/issues/4030), [#5307](https://github.com/angular/angular.js/issues/5307), [#6001](https://github.com/angular/angular.js/issues/6001), [#6432](https://github.com/angular/angular.js/issues/6432), [#7231](https://github.com/angular/angular.js/issues/7231), [#11358](https://github.com/angular/angular.js/issues/11358), [#12082](https://github.com/angular/angular.js/issues/12082), [#12153](https://github.com/angular/angular.js/issues/12153), [#12392](https://github.com/angular/angular.js/issues/12392), [#12545](https://github.com/angular/angular.js/issues/12545), [#12867](https://github.com/angular/angular.js/issues/12867), [#13213](https://github.com/angular/angular.js/issues/13213), [#13558](https://github.com/angular/angular.js/issues/13558), [#3296](https://github.com/angular/angular.js/issues/3296), [#3347](https://github.com/angular/angular.js/issues/3347), [#3447](https://github.com/angular/angular.js/issues/3447), [#3999](https://github.com/angular/angular.js/issues/3999), [#4428](https://github.com/angular/angular.js/issues/4428), [#6251](https://github.com/angular/angular.js/issues/6251), [#6330](https://github.com/angular/angular.js/issues/6330), [#7134](https://github.com/angular/angular.js/issues/7134), [#7935](https://github.com/angular/angular.js/issues/7935), [#9724](https://github.com/angular/angular.js/issues/9724), [#9744](https://github.com/angular/angular.js/issues/9744), [#9872](https://github.com/angular/angular.js/issues/9872), [#10211](https://github.com/angular/angular.js/issues/10211), [#10366](https://github.com/angular/angular.js/issues/10366), [#10918](https://github.com/angular/angular.js/issues/10918), [#11197](https://github.com/angular/angular.js/issues/11197), [#11261](https://github.com/angular/angular.js/issues/11261), [#11342](https://github.com/angular/angular.js/issues/11342), [#11577](https://github.com/angular/angular.js/issues/11577), [#12150](https://github.com/angular/angular.js/issues/12150), [#12317](https://github.com/angular/angular.js/issues/12317), [#12455](https://github.com/angular/angular.js/issues/12455), [#12734](https://github.com/angular/angular.js/issues/12734), [#13122](https://github.com/angular/angular.js/issues/13122), [#13272](https://github.com/angular/angular.js/issues/13272), [#13447](https://github.com/angular/angular.js/issues/13447)) ## Features - **$compile:** - allow required controllers to be bound to the directive controller ([56c3666f](https://github.com/angular/angular.js/commit/56c3666fe50955aa7d1c1b6159626f1c1cb34637), [#6040](https://github.com/angular/angular.js/issues/6040), [#5893](https://github.com/angular/angular.js/issues/5893), [#13763](https://github.com/angular/angular.js/issues/13763)) - allow directive definition property `require` to be an object ([cd21216f](https://github.com/angular/angular.js/commit/cd21216ff7eb6d81fc9aa1d1ef994c3d8e046394), [#8401](https://github.com/angular/angular.js/issues/8401), [#13763](https://github.com/angular/angular.js/issues/13763)) - call `$onInit` on directive controllers after all sibling controllers have been constructed ([3ffdf380](https://github.com/angular/angular.js/commit/3ffdf380c522cbf15a4ce5a8b08d21d40d5f8859), [#13763](https://github.com/angular/angular.js/issues/13763)) - **$locale:** include original locale ID in `$locale` ([63492a02](https://github.com/angular/angular.js/commit/63492a02614a33a50cc28f9fdd73bae731352dd5), [#13390](https://github.com/angular/angular.js/issues/13390)) - **$resource:** add support for timeout in cancellable actions ([d641901b](https://github.com/angular/angular.js/commit/d641901be6887cdd93dc678eb514366eb759d21e), [#13824](https://github.com/angular/angular.js/issues/13824)) ## Performance Improvements - **$compile:** avoid needless overhead when wrapping text nodes ([92e4801d](https://github.com/angular/angular.js/commit/92e4801d88fbe9b7ef719fd3d0175d85420e1cc4)) - **ngAnimate:** speed up `areAnimationsAllowed` check ([683bd92f](https://github.com/angular/angular.js/commit/683bd92f56990bf1bfeabf619d997716909ebf6b)) ## Breaking Changes - **ngSanitize:** due to [234053fc](https://github.com/angular/angular.js/commit/234053fc9ad90e0d05be7e8359c6af66be94c094), The `$sanitize` service will now remove instances of the `usemap` attribute from any elements passed to it. This attribute is used to reference another element by `name` or `id`. Since the `name` and `id` attributes are already blacklisted, a sanitized `usemap` attribute could only reference unsanitized content, which is a security risk. - **ngTouch:** due to [0dfc1dfe](https://github.com/angular/angular.js/commit/0dfc1dfebf26af7f951f301c4e3848ac46f05d7f), The `ngClick` override directive from the `ngTouch` module is **deprecated and disabled by default**. This means that on touch-based devices, users might now experience a 300ms delay before a click event is fired. If you rely on this directive, you can still enable it with the `$touchProvider.ngClickOverrideEnabled()`method: ```js angular.module('myApp').config(function($touchProvider) { $touchProvider.ngClickOverrideEnabled(true); }); ``` Going forward, we recommend using [FastClick](https://github.com/ftlabs/fastclick) or perhaps one of the [Angular 3rd party touch-related modules](http://ngmodules.org/tags/touch) that provide similar functionality. Also note that modern browsers already remove the 300ms delay under some circumstances: - Chrome and Firefox for Android remove the 300ms delay when the well-known `` is set - Internet Explorer removes the delay when `touch-action` css property is set to `none` or `manipulation` - Since iOs 8, Safari removes the delay on so-called "slow taps" See this [article by Telerik](http://developer.telerik.com/featured/300-ms-click-delay-ios-8/) for more info on the topic. **Note that this change does not affect the `ngSwipe` directive.** # 1.4.9 implicit-superannuation (2016-01-21) ## Bug Fixes - **Animation** - ensure that animate promises resolve when the document is hidden ([9a60408c](https://github.com/angular/angular.js/commit/9a60408c804a62a9517857bdb9a42182ab6769e3)) - do not trigger animations if the document is hidden ([09f6061a](https://github.com/angular/angular.js/commit/09f6061a8ee41cae4268e8d44d727d3bf52e22a9), [#12842](https://github.com/angular/angular.js/issues/12842), [#13776](https://github.com/angular/angular.js/issues/13776)) - only copy over the animation options once ([2fc954d3](https://github.com/angular/angular.js/commit/2fc954d33a3a4c5d4f355be1e15a381664e02f1b), [#13722](https://github.com/angular/angular.js/issues/13722), [#13578](https://github.com/angular/angular.js/issues/13578)) - allow event listeners on document in IE ([5ba4419e](https://github.com/angular/angular.js/commit/5ba4419e265ff34c6c23bf3533a3332c99c5f014), [#13548](https://github.com/angular/angular.js/issues/13548), [#13696](https://github.com/angular/angular.js/issues/13696)) - allow removing classes that are added by a running animation ([6c4581fc](https://github.com/angular/angular.js/commit/6c4581fcb692b17295a41b8918c6038333e7bc3d), [#13339](https://github.com/angular/angular.js/issues/13339), [#13380](https://github.com/angular/angular.js/issues/13380), [#13414](https://github.com/angular/angular.js/issues/13414), [#13472](https://github.com/angular/angular.js/issues/13472), [#13678](https://github.com/angular/angular.js/issues/13678)) - do not use `event.timeStamp` anymore for time tracking ([620a20d1](https://github.com/angular/angular.js/commit/620a20d1b3376d95f85004ffa494e36bb19a2e4d), [#13494](https://github.com/angular/angular.js/issues/13494), [#13495](https://github.com/angular/angular.js/issues/13495)) - ignore children without animation data when closing them ([be01cebf](https://github.com/angular/angular.js/commit/be01cebfae9ca2383105e535820442b39a96b240), [#11992](https://github.com/angular/angular.js/issues/11992), [#13424](https://github.com/angular/angular.js/issues/13424)) - do not alter the provided options data ([7a81e6fe](https://github.com/angular/angular.js/commit/7a81e6fe2db084172e34d509f0baad2b33a8722c), [#13040](https://github.com/angular/angular.js/issues/13040), [#13175](https://github.com/angular/angular.js/issues/13175)) - correctly handle `$animate.pin()` host elements ([a985adfd](https://github.com/angular/angular.js/commit/a985adfdabd871f3f3f3ee59f371da50cd9611d9), [#13783](https://github.com/angular/angular.js/issues/13783)) - allow animations when pinned element is parent element ([4cb8ac61](https://github.com/angular/angular.js/commit/4cb8ac61c7574ab4039852c358dd5946268b69fb), [#13466](https://github.com/angular/angular.js/issues/13466)) - allow enabled children to animate on disabled parents ([6d85f24e](https://github.com/angular/angular.js/commit/6d85f24e2081d2a69c80697d90ebd45f228d9682), [#13179](https://github.com/angular/angular.js/issues/13179), [#13695](https://github.com/angular/angular.js/issues/13695)) - correctly access `minErr` ([0c1b54f0](https://github.com/angular/angular.js/commit/0c1b54f04cf5bd7c1fe42ac49b4fbfdf35c60979)) - ensure animate runner is the same with and without animations ([937942f5](https://github.com/angular/angular.js/commit/937942f5ada6de1bdacdf0ba465f6f118c270119), [#13205](https://github.com/angular/angular.js/issues/13205), [#13347](https://github.com/angular/angular.js/issues/13347)) - remove animation end event listeners on close ([d9157849](https://github.com/angular/angular.js/commit/d9157849df224a3a8d2e0bf03099d137f51499f6), [#13672](https://github.com/angular/angular.js/issues/13672)) - consider options.delay value for closing timeout ([592bf516](https://github.com/angular/angular.js/commit/592bf516e50b9729e446d9aa01f4d9ebdd72d187), [#13355](https://github.com/angular/angular.js/issues/13355), [#13363](https://github.com/angular/angular.js/issues/13363)) - **$controller:** allow identifiers containing `$` ([2563ff7b](https://github.com/angular/angular.js/commit/2563ff7ba92d84af978e7e4131253190d4d00c20), [#13736](https://github.com/angular/angular.js/issues/13736)) - **$http:** throw if url passed is not a string ([c5bf9dae](https://github.com/angular/angular.js/commit/c5bf9daef6dfdb3e4a2942c21155a9f67d92e237), [#12925](https://github.com/angular/angular.js/issues/12925), [#13444](https://github.com/angular/angular.js/issues/13444)) - **$parse:** handle interceptors with `undefined` expressions ([7bb2414b](https://github.com/angular/angular.js/commit/7bb2414bf6461aa45a983fd322ae875f81814cc4)) - **$resource:** don't allow using promises as `timeout` and log a warning ([47486524](https://github.com/angular/angular.js/commit/474865242c89ba3e8143f0cd52f8c292979ea730)) - **formatNumber:** cope with large and small number corner cases ([9c49eb13](https://github.com/angular/angular.js/commit/9c49eb131a6100d58c965d01fb08bcd319032229), [#13394](https://github.com/angular/angular.js/issues/13394), [#8674](https://github.com/angular/angular.js/issues/8674), [#12709](https://github.com/angular/angular.js/issues/12709), [#8705](https://github.com/angular/angular.js/issues/8705), [#12707](https://github.com/angular/angular.js/issues/12707), [#10246](https://github.com/angular/angular.js/issues/10246), [#10252](https://github.com/angular/angular.js/issues/10252)) - **input:** - fix URL validation being too strict ([6610ae81](https://github.com/angular/angular.js/commit/6610ae816f78ee8fc1080b93a55bf19e4ce48d3e), [#13528](https://github.com/angular/angular.js/issues/13528), [#13544](https://github.com/angular/angular.js/issues/13544)) - add missing chars to URL validation regex ([2995b54a](https://github.com/angular/angular.js/commit/2995b54afdb9a3a2a81b0076a6ac0a9001041163), [#13379](https://github.com/angular/angular.js/issues/13379), [#13460](https://github.com/angular/angular.js/issues/13460)) - **isArrayLike:** recognize empty instances of an Array subclass ([323f9ab7](https://github.com/angular/angular.js/commit/323f9ab73696f223c245ddefd62a769fe102615e), [#13560](https://github.com/angular/angular.js/issues/13560), [#13708](https://github.com/angular/angular.js/issues/13708)) - **ngInclude:** do not compile template if original scope is destroyed ([9590bcf0](https://github.com/angular/angular.js/commit/9590bcf0620cd507a7795c55f9a6f4a48bfedbc1)) - **ngOptions:** - don't skip `optgroup` elements with `value === ''` ([85e392f3](https://github.com/angular/angular.js/commit/85e392f3543ef5285c7e90e843af0ab522cb0531), [#13487](https://github.com/angular/angular.js/issues/13487), [#13489](https://github.com/angular/angular.js/issues/13489)) - don't `$dirty` multiple select after compilation ([f163c905](https://github.com/angular/angular.js/commit/f163c90555774426ccb14752d089fc707cb4029c), [#13211](https://github.com/angular/angular.js/issues/13211), [#13326](https://github.com/angular/angular.js/issues/13326)) - **select:** re-define `ngModelCtrl.$render` in the `select` directive's postLink function ([529b2507](https://github.com/angular/angular.js/commit/529b2507bdb4fcc22dfa0f7ab462c79fc78d1413), [#13583](https://github.com/angular/angular.js/issues/13583), [#13583](https://github.com/angular/angular.js/issues/13583), [#13663](https://github.com/angular/angular.js/issues/13663)) ## Minor Features - **ngLocale:** add support for standalone months ([54c4041e](https://github.com/angular/angular.js/commit/54c4041ebc0cc4df70cf6996f43a6aaaf56d46bd), [#3744](https://github.com/angular/angular.js/issues/3744), [#10247](https://github.com/angular/angular.js/issues/10247), [#12642](https://github.com/angular/angular.js/issues/12642), [#12844](https://github.com/angular/angular.js/issues/12844)) - **ngMock:** add support for `$animate.closeAndFlush()` ([512c0811](https://github.com/angular/angular.js/commit/512c08118786a419fabbd063fa17d224aba125cf)) ## Performance Improvements - **ngAnimate:** speed up `areAnimationsAllowed` check ([2d3303dd](https://github.com/angular/angular.js/commit/2d3303ddda6330c4f45b381b6b17346f6cfe2d97)) ## Breaking Changes While we do not deem the following to be a real breaking change we are highlighting it here in the changelog to ensure that it does not surprise anyone. - **$resource:** due to [47486524](https://github.com/angular/angular.js/commit/474865242c89ba3e8143f0cd52f8c292979ea730), **Possible breaking change** for users who updated their code to provide a `timeout` promise for a `$resource` request in version v1.4.8. Up to v1.4.7 (included), using a promise as a timeout in `$resource`, would silently fail (i.e. have no effect). In v1.4.8, using a promise as timeout would have the (buggy) behaviour described in https://github.com/angular/angular.js/pull/12657#issuecomment-152108887. (I.e. it will work as expected for the first time you resolve the promise and will cancel all subsequent requests after that - one has to re-create the resource class. This was not documented.) With this change, using a promise as timeout in v1.4.9 onwards is not allowed. It will log a warning and ignore the timeout value. If you need support for cancellable `$resource` actions, you should upgrade to version 1.5 or higher. # 1.5.0-rc.1 quantum-fermentation (2016-01-15) ## Features - **$compile:** - Allow ES6 classes as controllers with `bindToController: true` ([8955cfb6](https://github.com/angular/angular.js/commit/8955cfb6462f79a32caa641ffc002f1522f08220)) - Allow ES6 classes as controllers with `bindToController: true` ([b0248b78](https://github.com/angular/angular.js/commit/b0248b7894649aa1e083698c66d01679fa66d1c1)) - **$compileProvider:** - allow registering components with the component() method ([feeb19787ca6e23e15578a4d1319f1c33853290c](https://github.com/angular/angular.js/commit/feeb19787ca6e23e15578a4d1319f1c33853290c)) - **component:** - default controllerAs to `$ctrl` ([d91cf167](https://github.com/angular/angular.js/commit/d91cf167960d47ce38fec0d33cab6119268623f0), [#13664](https://github.com/angular/angular.js/issues/13664), [#13710](https://github.com/angular/angular.js/issues/13710)) - disallow non-isolate scopes ([f31c5a39](https://github.com/angular/angular.js/commit/f31c5a3924629795cd9169e69b9e20efd4a9d927), [#13710](https://github.com/angular/angular.js/issues/13710)) - allow `component()` helper to copy over custom annotations ([90975db5](https://github.com/angular/angular.js/commit/90975db5f91dfe44fa5dc4542e92c68e0d425929), [#13741](https://github.com/angular/angular.js/issues/13741)) - **$injector:** support instantiating classes. ([8b6b4282](https://github.com/angular/angular.js/commit/8b6b42827186e5e4eb7a56f6b824c560a5058bd2)) - **ngMock:** add support for `$animate.closeAndFlush()` ([e1def1b8](https://github.com/angular/angular.js/commit/e1def1b8fe543fde09abda076d66606027f7dbeb), [#13005](https://github.com/angular/angular.js/issues/13005), [#13576](https://github.com/angular/angular.js/issues/13576), [#13707](https://github.com/angular/angular.js/issues/13707)) - **ngMock.$componentController:** add helper to instantiate controllers for components ([dd14e0c4](https://github.com/angular/angular.js/commit/dd14e0c44d2963d217cd4eb28f1ad6e6a643d63f), [#13683](https://github.com/angular/angular.js/issues/13683), [#13711](https://github.com/angular/angular.js/issues/13711)) ## Bug Fixes - **$animate:** - allow enabled children to animate on disabled parents ([8b636033](https://github.com/angular/angular.js/commit/8b6360338dca4bb7d8656d556bd7fb209e5aae73), [#13179](https://github.com/angular/angular.js/issues/13179), [#13695](https://github.com/angular/angular.js/issues/13695)) - allow animations when pinned element is parent element ([8f0b4825](https://github.com/angular/angular.js/commit/8f0b48259666c1496970d6ca90decb36d6fa3295), [#13466](https://github.com/angular/angular.js/issues/13466)) - correctly access minErr ([bc41ad8a](https://github.com/angular/angular.js/commit/bc41ad8aa8fc41ff30e9f68220a7c7c5fe194478)) - **$animateCss:** - only (de)register listeners when events have been added ([959f2bbb](https://github.com/angular/angular.js/commit/959f2bbb2d12c23a74902433c6247290d8f2fb89), [#13514](https://github.com/angular/angular.js/issues/13514)) - remove animation end event listeners on close ([20604e7f](https://github.com/angular/angular.js/commit/20604e7fc4f69ecfafbd8d0c1fdc70d478075c3a), [#10387](https://github.com/angular/angular.js/issues/10387)) - respect transition styles already on the element ([de9777d8](https://github.com/angular/angular.js/commit/de9777d8193531472df4b57fdeb6650d7f7c1846), [#12656](https://github.com/angular/angular.js/issues/12656), [#13333](https://github.com/angular/angular.js/issues/13333)) - **$compile:** - add missing variable declaration ([6cdbda7c](https://github.com/angular/angular.js/commit/6cdbda7cf1cfc1d49eb98d42d8e823e65bebb90d)) - fix namespace detection for anchor elements ([c9e6cf9b](https://github.com/angular/angular.js/commit/c9e6cf9be0d549fba234956f7e263f40d1bb1e76)) - **component:** - remove the ability to set the `restrict` option on `component()` helper ([25bc5318](https://github.com/angular/angular.js/commit/25bc53180248bf5e8a6467c55d913cfa38fc7a3b), [#13741](https://github.com/angular/angular.js/issues/13741)) - use `false` as default value for `transclude` in `component()` helper ([6a47c0d7](https://github.com/angular/angular.js/commit/6a47c0d75d0c6f0bfb3b5492d1f05ec900387744), [#13566](https://github.com/angular/angular.js/issues/13566), [#13581](https://github.com/angular/angular.js/issues/13581)) - allow passing template/templateUrl in array notation ([99d601a0](https://github.com/angular/angular.js/commit/99d601a048ac2b82e2f74ae88c96773e5d1a7258)) - **$controller:** allow identifiers containing `$` ([4e1b36c2](https://github.com/angular/angular.js/commit/4e1b36c21686ad0ca4930d1d81f77a7d9cc35851), [#13736](https://github.com/angular/angular.js/issues/13736)) - **$injector:** workaround for MS Edge class detection ([fabc6ab5](https://github.com/angular/angular.js/commit/fabc6ab5b01dc687aa8385da067752ba34da6524)) - **$q:** make instanceof work for $q promises ([b3ef5e08](https://github.com/angular/angular.js/commit/b3ef5e08528f5f1916876032700a016448fb196a)) - **copy:** - add support for ArrayBuffer, handle multiple references to ArrayBuffer ([986647a9](https://github.com/angular/angular.js/commit/986647a968858121c1de472fc4913221dc8d339a)) - add support for String/Boolean/Number object types ([7b51243b](https://github.com/angular/angular.js/commit/7b51243be597900b1f765495dadfea5fccd2228e)) - **input:** fix URL validation being too strict ([e3be5d6e](https://github.com/angular/angular.js/commit/e3be5d6efaec6537ab530640c64f452aa1006fcb), [#13528](https://github.com/angular/angular.js/issues/13528), [#13544](https://github.com/angular/angular.js/issues/13544)) - **isArrayLike:** recognize empty instances of an Array subclass ([93c7251f](https://github.com/angular/angular.js/commit/93c7251f5f40bdbe050c74130d90331613d968a2), [#13560](https://github.com/angular/angular.js/issues/13560), [#13708](https://github.com/angular/angular.js/issues/13708)) - **linky:** throw error if input is not a string ([98c2db7f](https://github.com/angular/angular.js/commit/98c2db7f9c2d078a408576e722407d518c7ee10a), [#13547](https://github.com/angular/angular.js/issues/13547), [#13693](https://github.com/angular/angular.js/issues/13693)) - **ngAnimate:** - only copy over the animation options once ([d4fa3313](https://github.com/angular/angular.js/commit/d4fa3313088a03d15ccbf266583d6ecaa0d22241), [#13722](https://github.com/angular/angular.js/issues/13722), [#13578](https://github.com/angular/angular.js/issues/13578)) - allow event listeners on document in IE ([e5cab951](https://github.com/angular/angular.js/commit/e5cab951f4e4969b092295b7f3ca7ec1d17eb9a6), [#13548](https://github.com/angular/angular.js/issues/13548), [#13696](https://github.com/angular/angular.js/issues/13696)) - allow removing classes that are added by a running animation ([776972ed](https://github.com/angular/angular.js/commit/776972ed9c49a62f5ad7c6f207209bf0f0c900bb), [#13339](https://github.com/angular/angular.js/issues/13339), [#13380](https://github.com/angular/angular.js/issues/13380), [#13414](https://github.com/angular/angular.js/issues/13414), [#13472](https://github.com/angular/angular.js/issues/13472), [#13678](https://github.com/angular/angular.js/issues/13678)) - do not use event.timeStamp anymore for time tracking ([e020b899](https://github.com/angular/angular.js/commit/e020b8993ec7b8e004c136ca40ea9bab02207dbf), [#13494](https://github.com/angular/angular.js/issues/13494), [#13495](https://github.com/angular/angular.js/issues/13495)) - **ngInclude:** do not compile template if original scope is destroyed ([98776487](https://github.com/angular/angular.js/commit/98776487a04667aa36cb24088ead198bd03b607c)) - **ngMock:** ignore empty javascript animations in $animate.closeAndFlush() ([a801df71](https://github.com/angular/angular.js/commit/a801df719ea8b5996676d4e7a88a26a5ece471e7)) - **ngOptions:** don't skip optgroup elements with value === '' ([6858caf2](https://github.com/angular/angular.js/commit/6858caf251b16a52e73d62f65c7e9e26e1f199ae), [#13487](https://github.com/angular/angular.js/issues/13487), [#13489](https://github.com/angular/angular.js/issues/13489)) - **select:** re-define ngModelCtrl.$render in the select postLink fn ([f7eab8d8](https://github.com/angular/angular.js/commit/f7eab8d8fe8cadecaee425f0db0c74e48619310c), [#13583](https://github.com/angular/angular.js/issues/13583), [#13583](https://github.com/angular/angular.js/issues/13583), [#13663](https://github.com/angular/angular.js/issues/13663)) ## Breaking Changes - **$component**: *These breaking changes affect only applications updating from previous 1.5 beta / rc versions* - Due to [d91cf167](https://github.com/angular/angular.js/commit/d91cf167960d47ce38fec0d33cab6119268623f0), the default `controllerAs` value for components is now `$ctrl` (previously the name of the component was used). To migrate, either set `controllerAs` to the component name, or change the property name in your templates to `$ctrl` - Due to [25bc5318](https://github.com/angular/angular.js/commit/25bc5318), it is no longer possible to set the `restrict` option on directives created via the `module.component()` helper. All components are now element directives (`restrict: 'E'`). If you need a directive that is not an element then you must use the `module.directive()` helper instead. - Due to [f31c5a39](https://github.com/angular/angular.js/commit/f31c5a3924629795cd9169e69b9e20efd4a9d927), components are now always created with `scope: {}` (isolate scope). Previously, it was also possible to create components with `scope: true` or `scope: false`. If your components rely on this scope configuration, you will have to create a regular directive instead. - Due to [6a47c0d7](https://github.com/angular/angular.js/commit/6a47c0d75d0c6f0bfb3b5492d1f05ec900387744), the `transclude` property is now `false` by default (previously `true`). If you created components that expected transclusion then you must change your code to specify `transclude: true`. - **linky:** due to [98c2db7f](https://github.com/angular/angular.js/commit/98c2db7f9c2d078a408576e722407d518c7ee10a), Before this change, the filter assumed that the input (if not undefined/null) was of type 'string' and that certain methods (such as `.match()`) would be available on it. Passing a non-string value would most likely result in a not-very-useful error being thrown (trying to call a method that does not exist) or in unexpected behavior (if the input happened to have the assumed methods). After this change, a proper (informative) error will be thrown. If you want to pass non-string values through `linky`, you need to explicitly convert them to strings first. Since input values could be initialized asynchronously, `undefined` or `null` will still be returned unchanged (without throwing an error). # 1.5.0-rc.0 oblong-panoptikum (2015-12-09) This is the first Release Candidate for AngularJS 1.5.0. Please try upgrading your applications and report any regressions or other issues you find as soon as possible. ## Features - **$parse:** provide a mechanism to access the locals object, `$locals` ([0ea53503](https://github.com/angular/angular.js/commit/0ea535035a3a1a992948490c3533bffb83235052)) - **$resource:** add proper support for cancelling requests, `$cancelRequest()` ([98528be3](https://github.com/angular/angular.js/commit/98528be311b48269ba0e15ba4e3e2ad9b89693a9), [#9332](https://github.com/angular/angular.js/issues/9332), [#13050](https://github.com/angular/angular.js/issues/13050), [#13058](https://github.com/angular/angular.js/issues/13058), [#13210](https://github.com/angular/angular.js/issues/13210)) - **ngAnimate:** provide ng-[event]-prepare class for structural animations ([6e18b50a](https://github.com/angular/angular.js/commit/6e18b50a5b168848cc526081b0a2a16075ee44bd)) - **ngLocale:** add support for standalone months ([96c73a06](https://github.com/angular/angular.js/commit/96c73a0672f0e46ae9285c482b057bd03ce135ba), [#3744](https://github.com/angular/angular.js/issues/3744), [#10247](https://github.com/angular/angular.js/issues/10247), [#12642](https://github.com/angular/angular.js/issues/12642), [#12844](https://github.com/angular/angular.js/issues/12844)) - **ngMock:** destroy $rootScope after each test ([b75c0d8d](https://github.com/angular/angular.js/commit/b75c0d8d0549261ece551210a11d8be48c3ab3cc), [#13433](https://github.com/angular/angular.js/issues/13433)) - **ngTransclude:** don't overwrite the contents with an unfilled optional slot ([0812af49](https://github.com/angular/angular.js/commit/0812af49bd4f4fad4067603ff64dbe720bd6e3e5), [#13426](https://github.com/angular/angular.js/issues/13426)) - **ngView:** reference resolved locals in scope, `resolveAs: '$resolve'` ([983b0598](https://github.com/angular/angular.js/commit/983b0598121a8c5a3a51a30120e114d7e3085d4d), [#13400](https://github.com/angular/angular.js/issues/13400)) ## Bug Fixes - **$compile:** - swap keys and values for transclude definition object ([c3a26911](https://github.com/angular/angular.js/commit/c3a2691115b92536fb3d213d0ca16ac68cf32415), [#13439](https://github.com/angular/angular.js/issues/13439)) - include non-elements in default transclusion slot ([df6fade6](https://github.com/angular/angular.js/commit/df6fade6e67cfbfb5295bab3703ba2054d48daa7)) - support merging special attribute names in `replace` directives ([a5ff651a](https://github.com/angular/angular.js/commit/a5ff651a59933c2c43b81642454ee458f98e1401), [#13317](https://github.com/angular/angular.js/issues/13317), [#13318](https://github.com/angular/angular.js/issues/13318)) - **$http:** throw if url passed is not a string ([6628b4f1](https://github.com/angular/angular.js/commit/6628b4f1e5835d997290881c6ba394547883a516), [#12925](https://github.com/angular/angular.js/issues/12925), [#13444](https://github.com/angular/angular.js/issues/13444)) - **$parse:** - prevent assignment on constructor properties ([5a674f3b](https://github.com/angular/angular.js/commit/5a674f3bb9d1118d11b333e3b966c01a571c09e6), [#13417](https://github.com/angular/angular.js/issues/13417)) - handle interceptors with `undefined` expressions ([4473b81c](https://github.com/angular/angular.js/commit/4473b81cdaf16c5509ac53d80b9bdfb0a7ac5f30)) - **$sanitize:** blacklist SVG `` elements ([7a668cdd](https://github.com/angular/angular.js/commit/7a668cdd7d08a7016883eb3c671cbcd586223ae8), [#13453](https://github.com/angular/angular.js/issues/13453)) - **formatNumber:** cope with large and small number corner cases ([6a0686d4](https://github.com/angular/angular.js/commit/6a0686d434c41445c50b2d9669073802ede77b3b), [#13394](https://github.com/angular/angular.js/issues/13394), [#8674](https://github.com/angular/angular.js/issues/8674), [#12709](https://github.com/angular/angular.js/issues/12709), [#8705](https://github.com/angular/angular.js/issues/8705), [#12707](https://github.com/angular/angular.js/issues/12707), [#10246](https://github.com/angular/angular.js/issues/10246), [#10252](https://github.com/angular/angular.js/issues/10252)) - **input:** add missing chars to URL validation regex ([e4bb8387](https://github.com/angular/angular.js/commit/e4bb8387952069cca9da06bbc5c87ae576c2bf6f), [#13379](https://github.com/angular/angular.js/issues/13379), [#13460](https://github.com/angular/angular.js/issues/13460)) - **ngAnimate:** - consider options.delay value for closing timeout ([7ffb2d3c](https://github.com/angular/angular.js/commit/7ffb2d3c17643303a51eb4e324c365af70fe3824), [#13355](https://github.com/angular/angular.js/issues/13355), [#13363](https://github.com/angular/angular.js/issues/13363)) - ensure animate runner is the same with and without animations ([546a277d](https://github.com/angular/angular.js/commit/546a277d65a3e075178d9b6d7ea6abcebc4bc04b), [#13205](https://github.com/angular/angular.js/issues/13205), [#13347](https://github.com/angular/angular.js/issues/13347)) - ignore children without animation data when closing them ([77419cf1](https://github.com/angular/angular.js/commit/77419cf19fe625b262e971d5453151c63ff52b34), [#11992](https://github.com/angular/angular.js/issues/11992), [#13424](https://github.com/angular/angular.js/issues/13424)) - do not alter the provided options data ([193153c3](https://github.com/angular/angular.js/commit/193153c3d391338a859cb7788ef32a8af05fb920), [#13040](https://github.com/angular/angular.js/issues/13040), [#13175](https://github.com/angular/angular.js/issues/13175)) - **ngMock:** clear out `$providerInjector` after each test ([a72c12bd](https://github.com/angular/angular.js/commit/a72c12bd7052da9f60da74625409374342b50b73), [#13397](https://github.com/angular/angular.js/issues/13397), [#13416](https://github.com/angular/angular.js/issues/13416)) - **ngOptions:** don't $dirty multiple select after compilation ([c7a2028a](https://github.com/angular/angular.js/commit/c7a2028ab38cdfc4d956c50b6f41cbccef302165), [#13211](https://github.com/angular/angular.js/issues/13211), [#13326](https://github.com/angular/angular.js/issues/13326)) - **ngTransclude:** - don't replace existing content if no transcluded content exists ([c3ae6ed7](https://github.com/angular/angular.js/commit/c3ae6ed78e145a9b0c13de7ef95852ba3c467551), [#11839](https://github.com/angular/angular.js/issues/11839)) - fix case where ngTransclude attribute value equals its key ([7ddbc9aa](https://github.com/angular/angular.js/commit/7ddbc9aa35119154acb649e8c5096babc1d43476), [#12934](https://github.com/angular/angular.js/issues/12934), [#13383](https://github.com/angular/angular.js/issues/13383)) ## Breaking Changes - **$compile:** due to [c3a26911](https://github.com/angular/angular.js/commit/c3a2691115b92536fb3d213d0ca16ac68cf32415), **This is only a breaking change to a feature that was added in beta 2. If you have not started using multi-slot transclusion then this will not affect you.** The keys and values for the `transclude` map of the directive definition have been swapped around to be more consistent with the other maps, such as `scope` and `bindToController`. Now the `key` is the slot name and the `value` is a normalized element selector. - **$resource:** due to [98528be3](https://github.com/angular/angular.js/commit/98528be311b48269ba0e15ba4e3e2ad9b89693a9), Using a promise as `timeout` is no longer supported and will log a warning. It never worked the way it was supposed to anyway. Before: ```js var deferred = $q.defer(); var User = $resource('/api/user/:id', {id: '@id'}, { get: {method: 'GET', timeout: deferred.promise} }); var user = User.get({id: 1}); // sends a request deferred.resolve(); // aborts the request // Now, we need to re-define `User` passing a new promise as `timeout` // or else all subsequent requests from `someAction` will be aborted User = $resource(...); user = User.get({id: 2}); ``` After: ```js var User = $resource('/api/user/:id', {id: '@id'}, { get: {method: 'GET', cancellable: true} }); var user = User.get({id: 1}); // sends a request user.$cancelRequest(); // aborts the request user = User.get({id: 2}); ``` - **$sanitize:** due to [7a668cdd](https://github.com/angular/angular.js/commit/7a668cdd7d08a7016883eb3c671cbcd586223ae8), The $sanitize service will now remove instances of the `` tag from the content passed to it. This element is used to import external SVG resources, which is a security risk as the `$sanitize` service does not have access to the resource in order to sanitize it. - **ngView:** due to [983b0598](https://github.com/angular/angular.js/commit/983b0598121a8c5a3a51a30120e114d7e3085d4d), A new property to access route resolves is now available on the scope of the route. The default name for this property is `$resolve`. If your scope already contains a property with this name then it will be hidden or overwritten. In this case, you should choose a custom name for this property, that does not collide with other properties on the scope, by specifying the `resolveAs` property on the route. - **$parse:** due to [0ea53503](https://github.com/angular/angular.js/commit/0ea535035a3a1a992948490c3533bffb83235052), A new property to access all the locals for an expression is now available on the scope. This property is `$locals`. * If `scope.$locals` already exists, the way to reference this property is now `this.$locals`. * If the locals themselves include a property `$locals` then the way to reference that is now `$locals.$locals`. # 1.4.8 ice-manipulation (2015-11-19) ## Bug Fixes - **$animate:** ensure leave animation calls `close` callback ([6bd6dbff](https://github.com/angular/angular.js/commit/6bd6dbff4961a601c03e9465442788781d329ba6), [#12278](https://github.com/angular/angular.js/issues/12278), [#12096](https://github.com/angular/angular.js/issues/12096), [#13054](https://github.com/angular/angular.js/issues/13054)) - **$cacheFactory:** check key exists before decreasing cache size count ([2a5a52a7](https://github.com/angular/angular.js/commit/2a5a52a76ccf60c6e8c5d881e90e11a2666a6d3c), [#12321](https://github.com/angular/angular.js/issues/12321), [#12329](https://github.com/angular/angular.js/issues/12329)) - **$compile:** - bind all directive controllers correctly when using `bindToController` ([5d8861fb](https://github.com/angular/angular.js/commit/5d8861fb2f203e8a688b6044cbd1140cd79fd049), [#11343](https://github.com/angular/angular.js/issues/11343), [#11345](https://github.com/angular/angular.js/issues/11345)) - evaluate against the correct scope with bindToController on new scope ([b9f7c453](https://github.com/angular/angular.js/commit/b9f7c453e00d6938106f414952f74d5e5fdcb993), [#13021](https://github.com/angular/angular.js/issues/13021), [#13025](https://github.com/angular/angular.js/issues/13025)) - fix scoping of transclusion directives inside replace directive ([74da0340](https://github.com/angular/angular.js/commit/74da03407782d679951cd8f693860cea214f2580), [#12975](https://github.com/angular/angular.js/issues/12975), [#12936](https://github.com/angular/angular.js/issues/12936), [#13244](https://github.com/angular/angular.js/issues/13244)) - **$http:** apply `transformResponse` even when `data` is empty ([c6909464](https://github.com/angular/angular.js/commit/c690946469e09cfe6b774e63dbe14ace92ce6cb7), [#12976](https://github.com/angular/angular.js/issues/12976), [#12979](https://github.com/angular/angular.js/issues/12979)) - **$location:** ensure `$locationChangeSuccess` fires even if URL ends with `#` ([6f8ddb6d](https://github.com/angular/angular.js/commit/6f8ddb6d4329441e8d4a856978413aa9b9bd918f), [#12175](https://github.com/angular/angular.js/issues/12175), [#13251](https://github.com/angular/angular.js/issues/13251)) - **$parse:** evaluate once simple expressions only once ([e4036824](https://github.com/angular/angular.js/commit/e403682444fa08af4f3491badf2f3a10d7595699), [#12983](https://github.com/angular/angular.js/issues/12983), [#13002](https://github.com/angular/angular.js/issues/13002)) - **$resource:** allow XHR request to be cancelled via a timeout promise ([7170f9d9](https://github.com/angular/angular.js/commit/7170f9d9ca765c578f8d3eb4699860a9330a0a11), [#12657](https://github.com/angular/angular.js/issues/12657), [#12675](https://github.com/angular/angular.js/issues/12675), [#10890](https://github.com/angular/angular.js/issues/10890), [#9332](https://github.com/angular/angular.js/issues/9332)) - **$rootScope:** prevent IE9 memory leak when destroying scopes ([87b0055c](https://github.com/angular/angular.js/commit/87b0055c80f40589c5bcf3765e59e872bcfae119), [#10706](https://github.com/angular/angular.js/issues/10706), [#11786](https://github.com/angular/angular.js/issues/11786)) - **Angular.js:** fix `isArrayLike` for unusual cases ([70edec94](https://github.com/angular/angular.js/commit/70edec947c7b189694ae66b129568182e3369cab), [#10186](https://github.com/angular/angular.js/issues/10186), [#8000](https://github.com/angular/angular.js/issues/8000), [#4855](https://github.com/angular/angular.js/issues/4855), [#4751](https://github.com/angular/angular.js/issues/4751), [#10272](https://github.com/angular/angular.js/issues/10272)) - **isArrayLike:** handle jQuery objects of length 0 ([d3da55c4](https://github.com/angular/angular.js/commit/d3da55c40f1e1ddceced5da51e364888ff9d82ff)) - **jqLite:** - deregister special `mouseenter` / `mouseleave` events correctly ([22f66025](https://github.com/angular/angular.js/commit/22f66025db262417ebb78c1ce1f4d7058dca3fd3), [#12795](https://github.com/angular/angular.js/issues/12795), [#12799](https://github.com/angular/angular.js/issues/12799)) - ensure mouseenter works with svg elements on IE ([c1f34e8e](https://github.com/angular/angular.js/commit/c1f34e8eeb5105767f6cbf4727b8c5664be2a261), [#10259](https://github.com/angular/angular.js/issues/10259), [#10276](https://github.com/angular/angular.js/issues/10276)) - **limitTo:** start at 0 if `begin` is negative and exceeds input length ([4fc40bc9](https://github.com/angular/angular.js/commit/4fc40bc9320a1d5902e648b70fa79c7cf7e794c7), [#12775](https://github.com/angular/angular.js/issues/12775), [#12781](https://github.com/angular/angular.js/issues/12781)) - **merge:** - ensure that jqlite->jqlite and DOM->DOM ([2f8db1bf](https://github.com/angular/angular.js/commit/2f8db1bf01173b546a2868fc7b8b188c2383fbff)) - clone elements instead of treating them like simple objects ([838cf4be](https://github.com/angular/angular.js/commit/838cf4be3c671903796dbb69d95c0e5ac1516a06), [#12286](https://github.com/angular/angular.js/issues/12286)) - **ngAria:** don't add tabindex to radio and checkbox inputs ([59f1f4e1](https://github.com/angular/angular.js/commit/59f1f4e19a02e6e6f4c41c15b0e9f3372d85cecc), [#12492](https://github.com/angular/angular.js/issues/12492), [#13095](https://github.com/angular/angular.js/issues/13095)) - **ngInput:** change URL_REGEXP to better match RFC3987 ([cb51116d](https://github.com/angular/angular.js/commit/cb51116dbd225ccfdbc9a565a66a170e65d26331), [#11341](https://github.com/angular/angular.js/issues/11341), [#11381](https://github.com/angular/angular.js/issues/11381)) - **ngMock:** reset cache before every test ([91b7cd9b](https://github.com/angular/angular.js/commit/91b7cd9b74d72a48d844c5c3e0e9dee03405e0ca), [#13013](https://github.com/angular/angular.js/issues/13013)) - **ngOptions:** - skip comments and empty options when looking for options ([0f58334b](https://github.com/angular/angular.js/commit/0f58334b7b9a9d3d6ff34e9754961b6f67731fae), [#12190](https://github.com/angular/angular.js/issues/12190), [#13029](https://github.com/angular/angular.js/issues/13029), [#13033](https://github.com/angular/angular.js/issues/13033)) - override select option registration to allow compilation of empty option ([7b2ecf42](https://github.com/angular/angular.js/commit/7b2ecf42c697eb8d51a0f2d73b324bd900139e05), [#11685](https://github.com/angular/angular.js/issues/11685), [#12972](https://github.com/angular/angular.js/issues/12972), [#12968](https://github.com/angular/angular.js/issues/12968), [#13012](https://github.com/angular/angular.js/issues/13012)) ## Performance Improvements - **$compile:** use static jquery data method to avoid creating new instances ([55ad192e](https://github.com/angular/angular.js/commit/55ad192e4ab79295ab15ecaaf8f6b9e7932a0336)) - **copy:** - avoid regex in `isTypedArray` ([19fab4a1](https://github.com/angular/angular.js/commit/19fab4a1d79d2445795273f1622344353cf4d104)) - only validate/clear if the user specifies a destination ([d1293540](https://github.com/angular/angular.js/commit/d1293540e13573eb9ea5f90730bb9c9710c345db), [#12068](https://github.com/angular/angular.js/issues/12068)) - **merge:** remove unnecessary wrapping of jqLite element ([ce6a96b0](https://github.com/angular/angular.js/commit/ce6a96b0d76dd2e5ab2247ca3059d284575bc6f0), [#13236](https://github.com/angular/angular.js/issues/13236)) # 1.5.0-beta.2 effective-delegation (2015-11-17) ## Bug Fixes - **$animate:** ensure leave animation calls `close` callback ([bfad2a4f](https://github.com/angular/angular.js/commit/bfad2a4f4ae71cfead61c112b0d2ab1fcadd39ee), [#12278](https://github.com/angular/angular.js/issues/12278), [#12096](https://github.com/angular/angular.js/issues/12096), [#13054](https://github.com/angular/angular.js/issues/13054)) - **$cacheFactory:** check key exists before decreasing cache size count ([b9bed7d9](https://github.com/angular/angular.js/commit/b9bed7d9dadb4ba1a4186f2ae562f807b21bcf12), [#12321](https://github.com/angular/angular.js/issues/12321), [#12329](https://github.com/angular/angular.js/issues/12329)) - **$compile:** - bind all directive controllers correctly when using `bindToController` ([bd7b2177](https://github.com/angular/angular.js/commit/bd7b2177291697a665e4068501b3704200972467), [1c13a4f4](https://github.com/angular/angular.js/commit/1c13a4f45ddc86805a96576b75c969ad577b6274) [#11343](https://github.com/angular/angular.js/issues/11343), [#11345](https://github.com/angular/angular.js/issues/11345)) - evaluate against the correct scope with bindToController on new scope ([50557a6c](https://github.com/angular/angular.js/commit/50557a6cd329e8438fb5694d11e8a7d018142afe), [#13021](https://github.com/angular/angular.js/issues/13021), [#13025](https://github.com/angular/angular.js/issues/13025)) - fix scoping of transclusion directives inside a replace directive ([1a98c0ee](https://github.com/angular/angular.js/commit/1a98c0ee346b718b9462da1abf4352a4605cbc7f), [#12975](https://github.com/angular/angular.js/issues/12975), [#12936](https://github.com/angular/angular.js/issues/12936), [#13244](https://github.com/angular/angular.js/issues/13244)) - **$http:** apply `transformResponse` even when `data` is empty ([7c0731ed](https://github.com/angular/angular.js/commit/7c0731edb2f72bdf0efa186f641dab3b6aecc5d5), [#12976](https://github.com/angular/angular.js/issues/12976), [#12979](https://github.com/angular/angular.js/issues/12979)) - **$location:** ensure `$locationChangeSuccess` fires even if URL ends with `#` ([4412fe23](https://github.com/angular/angular.js/commit/4412fe238f37f79a2017ee7b20ba089c0acd73e9), [#12175](https://github.com/angular/angular.js/issues/12175), [#13251](https://github.com/angular/angular.js/issues/13251)) - **$parse:** evaluate simple expressions in interpolations only once ([1caf0b6b](https://github.com/angular/angular.js/commit/1caf0b6bee5781589e20f7a27a8c60e8b1b784f5), [#12983](https://github.com/angular/angular.js/issues/12983), [#13002](https://github.com/angular/angular.js/issues/13002)) - **$resource:** allow XHR request to be cancelled via a timeout promise ([4fc73466](https://github.com/angular/angular.js/commit/4fc734665e5dddef26ed30a9d4f75632cd269481), [#12657](https://github.com/angular/angular.js/issues/12657), [#12675](https://github.com/angular/angular.js/issues/12675), [#10890](https://github.com/angular/angular.js/issues/10890), [#9332](https://github.com/angular/angular.js/issues/9332)) - **$rootScope:** prevent IE9 memory leak when destroying scopes ([8fe781fb](https://github.com/angular/angular.js/commit/8fe781fbe7c42c64eb895c28d9fd5479b037d020), [#10706](https://github.com/angular/angular.js/issues/10706), [#11786](https://github.com/angular/angular.js/issues/11786)) - **Angular.js:** fix `isArrayLike` for unusual cases ([2c8d87e0](https://github.com/angular/angular.js/commit/2c8d87e064dca99a49ed35d1db885b1f2e40dcf4), [#10186](https://github.com/angular/angular.js/issues/10186), [#8000](https://github.com/angular/angular.js/issues/8000), [#4855](https://github.com/angular/angular.js/issues/4855), [#4751](https://github.com/angular/angular.js/issues/4751), [#10272](https://github.com/angular/angular.js/issues/10272)) - **isArrayLike:** handle jQuery objects of length 0 ([773efd08](https://github.com/angular/angular.js/commit/773efd0812097a89944c889c595485a5744326f6)) - **jqLite:** - deregister special `mouseenter` / `mouseleave` events correctly ([f5aa2079](https://github.com/angular/angular.js/commit/f5aa207960e0df577284a06a4353e2b53b159589), [#12795](https://github.com/angular/angular.js/issues/12795), [#12799](https://github.com/angular/angular.js/issues/12799)) - ensure mouseenter works with svg elements on IE ([941c1c35](https://github.com/angular/angular.js/commit/941c1c35f175c36171a8855323f086341ea55711), [#10259](https://github.com/angular/angular.js/issues/10259), [#10276](https://github.com/angular/angular.js/issues/10276)) - **limitTo:** start at 0 if `begin` is negative and exceeds input length ([ecf93048](https://github.com/angular/angular.js/commit/ecf9304811a0fd54289a35b9c3b715a1d4447806), [#12775](https://github.com/angular/angular.js/issues/12775), [#12781](https://github.com/angular/angular.js/issues/12781)) - **merge:** - ensure that jqlite->jqlite and DOM->DOM ([75292a6c](https://github.com/angular/angular.js/commit/75292a6cb5e17d618902f7996e80eb3118eff7b0)) - clone elements instead of treating them like simple objects ([17715fa3](https://github.com/angular/angular.js/commit/17715fa3668b1fcabaedcd82e2e57b2a80e0a0c2), [#12286](https://github.com/angular/angular.js/issues/12286)) - **ngAria:** don't add tabindex to radio and checkbox inputs ([662fb282](https://github.com/angular/angular.js/commit/662fb282c176ca00a85b6dec7af90446ea90f662), [#12492](https://github.com/angular/angular.js/issues/12492), [#13095](https://github.com/angular/angular.js/issues/13095)) - **ngInput:** change URL_REGEXP to better match RFC3987 ([ffb6b2fb](https://github.com/angular/angular.js/commit/ffb6b2fb56d9ffcb051284965dd538629ea9687a), [#11341](https://github.com/angular/angular.js/issues/11341), [#11381](https://github.com/angular/angular.js/issues/11381)) - **ngMessage:** make ngMessage compatible with ngBind ([4971ef12](https://github.com/angular/angular.js/commit/4971ef12d4c2c268cb8d26f90385dc96eba19db8), [#8089](https://github.com/angular/angular.js/issues/8089), [#13074](https://github.com/angular/angular.js/issues/13074)) - **ngMock:** reset cache before every test ([fd83d372](https://github.com/angular/angular.js/commit/fd83d3724ad30a93254f08cb82f981eaddb5dbff), [#13013](https://github.com/angular/angular.js/issues/13013)) - **ngOptions:** - skip comments and empty options when looking for options ([395f3ec6](https://github.com/angular/angular.js/commit/395f3ec638f2ee77d22889823aa80898a6ce812d), [#12190](https://github.com/angular/angular.js/issues/12190), [#13029](https://github.com/angular/angular.js/issues/13029), [#13033](https://github.com/angular/angular.js/issues/13033)) - override select option registration to allow compilation of empty option ([2fcfd75a](https://github.com/angular/angular.js/commit/2fcfd75a142200e1a4b1b7ed4fb588e3befcbd57), [#11685](https://github.com/angular/angular.js/issues/11685), [#12972](https://github.com/angular/angular.js/issues/12972), [#12968](https://github.com/angular/angular.js/issues/12968), [#13012](https://github.com/angular/angular.js/issues/13012)) - **orderByFilter:** throw error if input is not array-like ([2a85a634](https://github.com/angular/angular.js/commit/2a85a634f86c84f15b411ce009a3515fca7ba580), [#11255](https://github.com/angular/angular.js/issues/11255), [#11719](https://github.com/angular/angular.js/issues/11719)) ## Features - **$compile:** multiple transclusion via named slots ([a4ada8ba](https://github.com/angular/angular.js/commit/a4ada8ba9c4358273575e16778e76446ad080054), [#4357](https://github.com/angular/angular.js/issues/4357), [#12742](https://github.com/angular/angular.js/issues/12742), [#11736](https://github.com/angular/angular.js/issues/11736), [#12934](https://github.com/angular/angular.js/issues/12934)) - **$injector:** allow specifying a decorator on $injector ([29a05984](https://github.com/angular/angular.js/commit/29a05984fe46c2c18ca51404f07c866dd92d1eec)) - **$templateRequest:** support configuration of $http options ([b2fc39d2](https://github.com/angular/angular.js/commit/b2fc39d2ddac64249b4f2961ee18b878a1e98251), [#13188](https://github.com/angular/angular.js/issues/13188), [#11868](https://github.com/angular/angular.js/issues/11868), [#6860](https://github.com/angular/angular.js/issues/6860)) - **Module:** add helper method, `component(...)` for creating component directives ([54e81655](https://github.com/angular/angular.js/commit/54e816552f20e198e14f849cdb2379fed8570c1a), [#10007](https://github.com/angular/angular.js/issues/10007), [#12933](https://github.com/angular/angular.js/issues/12933)) - **linky:** add support for custom attributes ([06f002b1](https://github.com/angular/angular.js/commit/06f002b161f61079933d482668440d8649fd84fc), [#12558](https://github.com/angular/angular.js/issues/12558), [#13061](https://github.com/angular/angular.js/issues/13061)) - **ngAnimate:** introduce ngAnimateSwap directive ([78297d25](https://github.com/angular/angular.js/commit/78297d252de7c80f73ecf9e291ed71bd52578361)) - **ngMock:** - add expectRoute and whenRoute shortcuts with colon param matching ([d67e999d](https://github.com/angular/angular.js/commit/d67e999dfbdf47b79fdb3830a04f4f4010a98b98), [#12406](https://github.com/angular/angular.js/issues/12406)) - invoke nested calls to `module()` immediately ([51a27c0f](https://github.com/angular/angular.js/commit/51a27c0f1ad6cd8d3e33ab0d71de22c1627c7ec3), [#12887](https://github.com/angular/angular.js/issues/12887)) ## Performance Improvements - **$compile:** use static jquery data method to avoid creating new instances ([9b90c32f](https://github.com/angular/angular.js/commit/9b90c32f31fd56e348539674128acec6536cd846)) - **$interpolate:** provide a simplified result for constant expressions ([cf83b4f4](https://github.com/angular/angular.js/commit/cf83b4f445d3a1fc18fc140e65e670754401d50b)) - **copy:** - avoid regex in `isTypedArray` ([c8768d12](https://github.com/angular/angular.js/commit/c8768d12f2f0b31f9ac971aeac6d2c17c9ff3db5)) - only validate/clear if the user specifies a destination ([33c67ce7](https://github.com/angular/angular.js/commit/33c67ce785cf8be7f0c294b3942ca4a337c5759d), [#12068](https://github.com/angular/angular.js/issues/12068)) - **merge:** remove unnecessary wrapping of jqLite element ([4daafd3d](https://github.com/angular/angular.js/commit/4daafd3dbe6a80d578f5a31df1bb99c77559543e), [#13236](https://github.com/angular/angular.js/issues/13236)) ## Breaking Changes - **ngMessage:** due to [4971ef12](https://github.com/angular/angular.js/commit/4971ef12d4c2c268cb8d26f90385dc96eba19db8), ngMessage is now compiled with a priority of 1, which means directives on the same element as ngMessage with a priority lower than 1 will be applied when ngMessage calls the $transclude function. Previously, they were applied during the initial compile phase and were passed the comment element created by the transclusion of ngMessage. To restore this behavior, custom directives need to have their priority increased to at least "1". - **orderByFilter:** due to [2a85a634](https://github.com/angular/angular.js/commit/2a85a634f86c84f15b411ce009a3515fca7ba580), Previously, an non array-like input would pass through the orderBy filter unchanged. Now, an error is thrown. This can be worked around by converting an object to an array, either manually or using a filter such as https://github.com/petebacondarwin/angular-toArrayFilter. (`null` and `undefined` still pass through without an error, in order to support asynchronous loading of resources.) # 1.5.0-beta.1 dense-dispersion (2015-09-29) ## Bug Fixes - **$compile:** - use createMap() for $$observe listeners when initialized from attr interpolation ([76c2491a](https://github.com/angular/angular.js/commit/76c2491a316d6b296c721227529fcb09087d369a), [#10446](https://github.com/angular/angular.js/issues/10446)) - properly sanitize xlink:href attribute interpolation ([f33ce173](https://github.com/angular/angular.js/commit/f33ce173c90736e349cf594df717ae3ee41e0f7a), [#12524](https://github.com/angular/angular.js/issues/12524)) - **$parse:** - fix typo in error message ("assing" -> "assign") ([70dac5ae](https://github.com/angular/angular.js/commit/70dac5ae82ffe9c6250681274905583747523b5d), [#12940](https://github.com/angular/angular.js/issues/12940)) - block assigning to fields of a constructor ([e1f4f23f](https://github.com/angular/angular.js/commit/e1f4f23f781a79ae8a4046b21130283cec3f2917), [#12860](https://github.com/angular/angular.js/issues/12860)) - do not convert to string computed properties multiple times ([20cf7d5e](https://github.com/angular/angular.js/commit/20cf7d5e3a0af766b1929e24794859c79439351c)) - **$sanitize:** - strip urls starting with 'unsafe:' as opposed to 'unsafe' ([a4dfa4d0](https://github.com/angular/angular.js/commit/a4dfa4d061fd2f6baf9821f0863dcce7888232ab), [#12524](https://github.com/angular/angular.js/issues/12524)) - add mXSS protection ([bc0d8c4e](https://github.com/angular/angular.js/commit/bc0d8c4eea9a34bff5e29dd492dcdd668251be40), [#12524](https://github.com/angular/angular.js/issues/12524)) - support void elements, fixups, remove dead code, typos ([94207f8f](https://github.com/angular/angular.js/commit/94207f8fb6ee8fe26fe18657f6b5aca6def99605), [#12524](https://github.com/angular/angular.js/issues/12524)) - **filters:** ensure `formatNumber` observes i18n decimal separators ([658a865c](https://github.com/angular/angular.js/commit/658a865c5b2580eed53b340e7394945cd76e2260), [#10342](https://github.com/angular/angular.js/issues/10342), [#12850](https://github.com/angular/angular.js/issues/12850)) - **injector:** support arrow functions with no parenthesis ([03726f7f](https://github.com/angular/angular.js/commit/03726f7fbd5d71c0604b8dd40e97cb2fb0fb777f), [#12890](https://github.com/angular/angular.js/issues/12890)) - **input:** remove workaround for Firefox bug ([b366f035](https://github.com/angular/angular.js/commit/b366f0352abccfe4c4868b5a9e8c0b88659bd1ee)) - **ngAnimate:** - ensure anchoring uses body as a container when needed ([240d5896](https://github.com/angular/angular.js/commit/240d5896ecdfac2351f9bd6147b52de52c0b7608), [#12872](https://github.com/angular/angular.js/issues/12872)) - callback detection should only use RAF when necessary ([8b27c3f0](https://github.com/angular/angular.js/commit/8b27c3f064b34532ba99d709cadf09fc4c0cbeab)) - **ngMessages:** prevent race condition with ngAnimate ([8366622b](https://github.com/angular/angular.js/commit/8366622bed009d2cad7d0cff28b9c1e48bfbd4e1), [#12856](https://github.com/angular/angular.js/issues/12856), [#12903](https://github.com/angular/angular.js/issues/12903)) - **ngOptions:** - skip comments when looking for option elements ([7f3f3dd3](https://github.com/angular/angular.js/commit/7f3f3dd3ebcc44711600ac292af54c411c3c705f), [#12190](https://github.com/angular/angular.js/issues/12190)) - prevent frozen select ui in IE ([42c97c5d](https://github.com/angular/angular.js/commit/42c97c5db5921e9e5447fb32bdae1f48da42844f), [#11314](https://github.com/angular/angular.js/issues/11314), [#11795](https://github.com/angular/angular.js/issues/11795)) - allow falsy values as option group identifiers ([b71d7c3f](https://github.com/angular/angular.js/commit/b71d7c3f3c04e65b02d88b33c22dd90ae3cdfc27), [#7015](https://github.com/angular/angular.js/issues/7015), [#7024](https://github.com/angular/angular.js/issues/7024), [#12888](https://github.com/angular/angular.js/issues/12888)) - throw if ngModel is not present ([ded25187](https://github.com/angular/angular.js/commit/ded2518756d4409fdfda0d4af243f2125bea01b5), [#7047](https://github.com/angular/angular.js/issues/7047), [#12840](https://github.com/angular/angular.js/issues/12840)) - **ngResource:** encode `&` in URL query param values ([1c97a605](https://github.com/angular/angular.js/commit/1c97a6057bc013262be761bca5e5c22224c4bbf8), [#12201](https://github.com/angular/angular.js/issues/12201)) ## Features - **$animateCss:** add support for temporary styles via `cleanupStyles` ([9f67da62](https://github.com/angular/angular.js/commit/9f67da625293441e27559ebde7503cc63408a95c), [#12930](https://github.com/angular/angular.js/issues/12930)) - **$http:** add `$xhrFactory` service to enable creation of custom xhr objects ([106f90aa](https://github.com/angular/angular.js/commit/106f90aafa0fa5a81ad7af7ffc9d1e00ab97ffef), [#2318](https://github.com/angular/angular.js/issues/2318), [#9319](https://github.com/angular/angular.js/issues/9319), [#12159](https://github.com/angular/angular.js/issues/12159)) - **$injector:** add strictDi property to $injector instance ([79577c5d](https://github.com/angular/angular.js/commit/79577c5d316c7bf0204d7d1747ddc5b15bfe2955), [#11728](https://github.com/angular/angular.js/issues/11728), [#11734](https://github.com/angular/angular.js/issues/11734)) - **$sanitize:** make svg support an opt-in ([181fc567](https://github.com/angular/angular.js/commit/181fc567d873df065f1e84af7225deb70a8d2eb9), [#12524](https://github.com/angular/angular.js/issues/12524)) - **ngModel:** provide ng-empty and ng-not-empty CSS classes ([630280c7](https://github.com/angular/angular.js/commit/630280c7fb04a83208d09c97c2efb81be3a3db74), [#10050](https://github.com/angular/angular.js/issues/10050), [#12848](https://github.com/angular/angular.js/issues/12848)) ## Performance Improvements - **$compile:** Lazily compile the `transclude` function ([652b83eb](https://github.com/angular/angular.js/commit/652b83eb226131d131a44453520a569202aa4aac)) ## Breaking Changes - **$sanitize:** due to [181fc567](https://github.com/angular/angular.js/commit/181fc567d873df065f1e84af7225deb70a8d2eb9), The svg support in is now an opt-in option Applications that depend on this option can use to turn the option back on, but while doing so, please read the warning provided in the documentation for information on preventing click-hijacking attacks when this option is turned on. - **ngOptions:** due to [b71d7c3f](https://github.com/angular/angular.js/commit/b71d7c3f3c04e65b02d88b33c22dd90ae3cdfc27), If your data contains falsy values (`''`, `0`, `false` and `null`) for option groups, then these options will now be placed into option groups. Previously all of these falsy values were treated as the option not being a member of a group. Only option groups that are `undefined` will result in the option being put in no group. If you have data that contains falsy values that should not be used as groups then you must filter the values before passing them to `ngOptions` converting falsy values to `undefined`. - **ngOptions:** due to [ded25187](https://github.com/angular/angular.js/commit/ded2518756d4409fdfda0d4af243f2125bea01b5), `ngOptions` will now throw if `ngModel` is not present on the `select` element. Previously, having no `ngModel` let `ngOptions` silently fail, which could lead to hard to debug errors. The change should therefore not affect any applications, as it simply makes the requirement more strict and alerts the developer explicitly. # 1.4.7 dark-luminescence (2015-09-29) ## Bug Fixes - **$compile:** use createMap() for $$observe listeners when initialized from attr interpolation ([5a98e806](https://github.com/angular/angular.js/commit/5a98e806ef3c59916bb4668268125610b11effe8), [#10446](https://github.com/angular/angular.js/issues/10446)) - **$parse:** - block assigning to fields of a constructor ([a7f3761e](https://github.com/angular/angular.js/commit/a7f3761eda5309f76b73c6fb1d3173a270112899), [#12860](https://github.com/angular/angular.js/issues/12860)) - do not convert to string computed properties multiple times ([698af191](https://github.com/angular/angular.js/commit/698af191ded2465ca4e0f97959b75fede5a531ab)) - **filters:** ensure `formatNumber` observes i18n decimal separators ([4994acd2](https://github.com/angular/angular.js/commit/4994acd26e582eec8a92b139bfc09ca79a9b8835), [#10342](https://github.com/angular/angular.js/issues/10342), [#12850](https://github.com/angular/angular.js/issues/12850)) - **jqLite:** properly handle dash-delimited node names in `jqLiteBuildFragment` ([cdd1227a](https://github.com/angular/angular.js/commit/cdd1227a308edd34d31b67f338083b6e0c4c0db9), [#10617](https://github.com/angular/angular.js/issues/10617), [#12759](https://github.com/angular/angular.js/issues/12759)) - **ngAnimate:** - ensure anchoring uses body as a container when needed ([9d3704ca](https://github.com/angular/angular.js/commit/9d3704ca467081f16b71b011eb50c53d5cdb2f34), [#12872](https://github.com/angular/angular.js/issues/12872)) - callback detection should only use RAF when necessary ([fa8c399f](https://github.com/angular/angular.js/commit/fa8c399fadc30b78710868fe59d2930fdc17c7a5)) - **ngMessages:** prevent race condition with ngAnimate ([7295c60f](https://github.com/angular/angular.js/commit/7295c60ffb9f2e4f32043c538ace740b187f565a), [#12856](https://github.com/angular/angular.js/issues/12856), [#12903](https://github.com/angular/angular.js/issues/12903)) - **ngOptions:** - skip comments when looking for option elements ([68d4dc5b](https://github.com/angular/angular.js/commit/68d4dc5b71b23e4c7c2650e6da3d7200de99f1ae), [#12190](https://github.com/angular/angular.js/issues/12190)) - prevent frozen select ui in IE ([dbc69851](https://github.com/angular/angular.js/commit/dbc698517ff620b3a6279f65d4a9b6e3c15087b9), [#11314](https://github.com/angular/angular.js/issues/11314), [#11795](https://github.com/angular/angular.js/issues/11795)) ## Features - **$animateCss:** add support for temporary styles via `cleanupStyles` ([e52d731b](https://github.com/angular/angular.js/commit/e52d731bfd1fbb6c616125fbde2fb365722254b7), [#12930](https://github.com/angular/angular.js/issues/12930)) - **$http:** add `$xhrFactory` service to enable creation of custom xhr objects ([7a413df5](https://github.com/angular/angular.js/commit/7a413df5e47e04e20a1c93d35922050bbcbfb492), [#2318](https://github.com/angular/angular.js/issues/2318), [#9319](https://github.com/angular/angular.js/issues/9319), [#12159](https://github.com/angular/angular.js/issues/12159)) # 1.3.20 shallow-translucence (2015-09-29) ## Bug Fixes - **$parse:** do not convert to string computed properties multiple times ([d434f3db](https://github.com/angular/angular.js/commit/d434f3db53d6209eb140b904e83bbde401686c16)) # 1.2.29 ultimate-deprecation (2015-09-29) ## Bug Fixes - **$browser:** prevent infinite digests when clearing the hash of a url ([9845cee6](https://github.com/angular/angular.js/commit/9845cee63eda3ad5024622c792c5e745b59ec5cb), [#9629](https://github.com/angular/angular.js/issues/9629), [#9635](https://github.com/angular/angular.js/issues/9635), [#10228](https://github.com/angular/angular.js/issues/10228), [#10308](https://github.com/angular/angular.js/issues/10308)) - **$compile:** workaround for IE11 MutationObserver ([fccce96d](https://github.com/angular/angular.js/commit/fccce96d444f442ba5ecfb67201505a445d0c209), [#11781](https://github.com/angular/angular.js/issues/11781), [#12613](https://github.com/angular/angular.js/issues/12613)) - **$location:** strip off empty hash segments when comparing ([e81b2f72](https://github.com/angular/angular.js/commit/e81b2f726cacd08bcf91500183a7ea3f71961718), [#9635](https://github.com/angular/angular.js/issues/9635), [#10748](https://github.com/angular/angular.js/issues/10748)) - **$parse:** - do not convert to string computed properties multiple times ([afb65c11](https://github.com/angular/angular.js/commit/afb65c11e5e3425f8431ad5b82308ff6b8ecbc64)) - throw error when accessing a restricted property indirectly ([e6cbd4fa](https://github.com/angular/angular.js/commit/e6cbd4faa211b2c0c8879c255e3194fb0717dcec), [#12833](https://github.com/angular/angular.js/issues/12833)) - **ngAnimate:** ensure that minified repaint code isn't removed ([b041b664](https://github.com/angular/angular.js/commit/b041b664752e34a42bbc65e02bf0009f0836c50c), [#9936](https://github.com/angular/angular.js/issues/9936)) # 1.5.0-beta.0 intialization-processation (2015-09-17) ## Bug Fixes - **jqLite:**: properly handle dash-delimited node names in `jqLiteBuildFragment` ([cdd1227a3](https://github.com/angular/angular.js/commit/cdd1227a308edd34d31b67f338083b6e0c4c0db9), [#10617](https://github.com/angular/angular.js/issues/10617)) # 1.4.6 multiplicative-elevation (2015-09-17) ## Bug Fixes - **$animate:** invalid CSS class names should not break subsequent elements ([c3a654b7](https://github.com/angular/angular.js/commit/c3a654b7c8e585b8fb9f90ece10ef54d19fd74c8), [#12674](https://github.com/angular/angular.js/issues/12674), [#12725](https://github.com/angular/angular.js/issues/12725)) - **$browser:** handle async updates to location ([8d39bd8a](https://github.com/angular/angular.js/commit/8d39bd8abf423517b5bff70137c2a29e32bff76d), [#12241](https://github.com/angular/angular.js/issues/12241), [#12819](https://github.com/angular/angular.js/issues/12819)) - **$http:** propagate status -1 for timed out requests ([38520a1a](https://github.com/angular/angular.js/commit/38520a1a73fffb6cfeffc7edfcab5be33e1619eb), [#4491](https://github.com/angular/angular.js/issues/4491), [#8756](https://github.com/angular/angular.js/issues/8756)) - **$httpBackend:** send `null` when post-data is undefined ([6f39f108](https://github.com/angular/angular.js/commit/6f39f1082773921e79b48a78aa6cd8a7d1921da7), [#12141](https://github.com/angular/angular.js/issues/12141), [#12739](https://github.com/angular/angular.js/issues/12739)) - **$parse:** - throw error when accessing a restricted property indirectly ([b2f8b0b8](https://github.com/angular/angular.js/commit/b2f8b0b875dbabf7bba0ba6e9bd553c7a8b910d0), [#12833](https://github.com/angular/angular.js/issues/12833)) - `assign` returns the new value ([7d2c6eee](https://github.com/angular/angular.js/commit/7d2c6eeef8ad61690737b6298c94f066082eff58), [#12675](https://github.com/angular/angular.js/issues/12675), [#12708](https://github.com/angular/angular.js/issues/12708)) - **angular.copy:** support copying XML nodes ([122ab074](https://github.com/angular/angular.js/commit/122ab074cac6401ecded51fa031af139360f40aa), [#5429](https://github.com/angular/angular.js/issues/5429), [#12786](https://github.com/angular/angular.js/issues/12786)) - **form, ngModel:** correctly notify parent form when children are added ([c6110e8b](https://github.com/angular/angular.js/commit/c6110e8b08c7e9bb2b7da5ecc5c42d1a834ea92d)) - **input:** ignore min/max if they are empty on all input types ([544001f5](https://github.com/angular/angular.js/commit/544001f5a331de06961c0201d69ecc92893abd0b), [#12363](https://github.com/angular/angular.js/issues/12363), [#12785](https://github.com/angular/angular.js/issues/12785)) - **ngAnimateMock:** $animate.flush should work for looping animations ([472d076c](https://github.com/angular/angular.js/commit/472d076cca2ffb99bd87d3c026ef69afc713268d)) - **ngAria:** clean up tabindex usage ([f48244ce](https://github.com/angular/angular.js/commit/f48244ce5e6d11637aab97af1aff3430bda12429), [#11500](https://github.com/angular/angular.js/issues/11500)) - **ngJq:** properly detect when `ng-jq` is empty ([19ecdb54](https://github.com/angular/angular.js/commit/19ecdb54bf85fc4e7bd3cde453aa6843f869a1ab), [#12741](https://github.com/angular/angular.js/issues/12741)) - **ngModel:** - remove reference to parentForm from removed control ([290b5049](https://github.com/angular/angular.js/commit/290b5049c2de4aa0d6ba8eea624bc6dce027b197), [#12263](https://github.com/angular/angular.js/issues/12263)) - let aliased validator directives work on any element ([43769fb6](https://github.com/angular/angular.js/commit/43769fb676ae904852582a2c88a5523f0b9f58fc), [#12158](https://github.com/angular/angular.js/issues/12158), [#12658](https://github.com/angular/angular.js/issues/12658)) - **ngRepeat:** add support to iterate an object's properties even if it does not inherit from Object ([7ea2c7f3](https://github.com/angular/angular.js/commit/7ea2c7f36ef854391df3f6b127ad42a2d5cbf1a3), [#9964](https://github.com/angular/angular.js/issues/9964)) - **rootScope:** add support for watchCollection to watch an object which does not inherit from Object ([20fb626b](https://github.com/angular/angular.js/commit/20fb626b78ed8fbd02f59f5b26df9387a2a6ea0e), [#9964](https://github.com/angular/angular.js/issues/9964)) - **select:** update option if interpolated value attribute changes ([82b0929e](https://github.com/angular/angular.js/commit/82b0929e4ea0ae087f766f2ee26f9570c8a3c8ac), [#12005](https://github.com/angular/angular.js/issues/12005), [#12582](https://github.com/angular/angular.js/issues/12582)) - **toDebugString:** change replacement string ([0ca8b1df](https://github.com/angular/angular.js/commit/0ca8b1df201044019596db7173d784aeebdea0a7), [#10103](https://github.com/angular/angular.js/issues/10103)) ## Performance Improvements - **Angular:** only create new collection in getBlockNodes if the block has changed ([0202663e](https://github.com/angular/angular.js/commit/0202663e938a477cd86145bb158bf7a02efd8fb5), [#9899](https://github.com/angular/angular.js/issues/9899)) # 1.3.19 glutinous-shriek (2015-09-15) ## Bug Fixes - **$http:** propagate status -1 for timed out requests ([f13055a0](https://github.com/angular/angular.js/commit/f13055a0a53a39b160448713a5617edee6042801), [#4491](https://github.com/angular/angular.js/issues/4491), [#8756](https://github.com/angular/angular.js/issues/8756)) - **$location:** don't crash if navigating outside the app base ([623ce1ad](https://github.com/angular/angular.js/commit/623ce1ad2cf68024719c5cae5d682d00195df30c), [#11667](https://github.com/angular/angular.js/issues/11667)) - **$parse:** throw error when accessing a restricted property indirectly ([ec98c94c](https://github.com/angular/angular.js/commit/ec98c94ccbfc97b655447956738d5f6ff98b2f33), [#12833](https://github.com/angular/angular.js/issues/12833)) - **ngModel:** validate pattern against the viewValue ([274e9353](https://github.com/angular/angular.js/commit/274e93537ed4e95aefeacea48909eb334894f0ac), [#12344](https://github.com/angular/angular.js/issues/12344)) ## Features - **ngAnimate:** introduce `$animate.flush` for unit testing ([f98e0384](https://github.com/angular/angular.js/commit/f98e038418f7367b2373adcf4887f64a8e8bdcb0)) ## Possible Breaking Changes - **ngModel:** due to [274e9353](https://github.com/angular/angular.js/commit/274e93537ed4e95aefeacea48909eb334894f0ac), The `ngPattern` and `pattern` directives will validate the regex against the `viewValue` of `ngModel`, i.e. the value of the model before the $parsers are applied. Previously, the modelValue (the result of the $parsers) was validated. This fixes issues where `input[date]` and `input[number]` cannot be validated because the viewValue string is parsed into `Date` and `Number` respectively (starting with Angular 1.3). It also brings the directives in line with HTML5 constraint validation, which validates against the input value. This change is unlikely to cause applications to fail, because even in Angular 1.2, the value that was validated by pattern could have been manipulated by the $parsers, as all validation was done inside this pipeline. If you rely on the pattern being validated against the modelValue, you must create your own validator directive that overwrites the built-in pattern validator: ``` .directive('patternModelOverwrite', function patternModelOverwriteDirective() { return { restrict: 'A', require: '?ngModel', priority: 1, compile: function() { var regexp, patternExp; return { pre: function(scope, elm, attr, ctrl) { if (!ctrl) return; attr.$observe('pattern', function(regex) { /** * The built-in directive will call our overwritten validator * (see below). We just need to update the regex. * The preLink fn guarantees our observer is called first. */ if (isString(regex) && regex.length > 0) { regex = new RegExp('^' + regex + '$'); } if (regex && !regex.test) { //The built-in validator will throw at this point return; } regexp = regex || undefined; }); }, post: function(scope, elm, attr, ctrl) { if (!ctrl) return; regexp, patternExp = attr.ngPattern || attr.pattern; //The postLink fn guarantees we overwrite the built-in pattern validator ctrl.$validators.pattern = function(value) { return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value); }; } }; } }; }); ``` # 1.4.5 permanent-internship (2015-08-28) ## Bug Fixes - **$animate:** `$animate.enabled(false)` should disable animations on $animateCss as well ([c3d5e33e](https://github.com/angular/angular.js/commit/c3d5e33e18bd9e423e2d0678e85564fad1dba99f), [#12696](https://github.com/angular/angular.js/issues/12696), [#12685](https://github.com/angular/angular.js/issues/12685)) - **$animateCss:** - do not throw errors when a closing timeout is fired on a removed element ([2f6b6fb7](https://github.com/angular/angular.js/commit/2f6b6fb7a1dee0ff97c5d2959b927347eeda6e8b), [#12650](https://github.com/angular/angular.js/issues/12650)) - fix parse errors on older Android WebViews ([1cc9c9ca](https://github.com/angular/angular.js/commit/1cc9c9ca9d9698356ea541517b3d06ce6556c01d), [#12610](https://github.com/angular/angular.js/issues/12610)) - properly handle cancellation timeouts for follow-up animations ([d8816731](https://github.com/angular/angular.js/commit/d88167318d1c69f0dbd2101c05955eb450c34fd5), [#12490](https://github.com/angular/angular.js/issues/12490), [#12359](https://github.com/angular/angular.js/issues/12359)) - ensure failed animations clear the internal cache ([0a75a3db](https://github.com/angular/angular.js/commit/0a75a3db6ef265389c8c955981c2fe67bb4f7769), [#12214](https://github.com/angular/angular.js/issues/12214), [#12518](https://github.com/angular/angular.js/issues/12518), [#12381](https://github.com/angular/angular.js/issues/12381)) - the transitions options delay value should be applied before class application ([0c81e9fd](https://github.com/angular/angular.js/commit/0c81e9fd25285dd757db98d458919776a1fb62fc), [#12584](https://github.com/angular/angular.js/issues/12584)) - **ngAnimate:** - use requestAnimationFrame to space out child animations ([ea8016c4](https://github.com/angular/angular.js/commit/ea8016c4c8f55bc021549f342618ed869998e335), [#12669](https://github.com/angular/angular.js/issues/12669), [#12594](https://github.com/angular/angular.js/issues/12594), [#12655](https://github.com/angular/angular.js/issues/12655), [#12631](https://github.com/angular/angular.js/issues/12631), [#12612](https://github.com/angular/angular.js/issues/12612), [#12187](https://github.com/angular/angular.js/issues/12187)) - only buffer rAF requests within the animation runners ([dc48aadd](https://github.com/angular/angular.js/commit/dc48aadd26bbf1797c1c408f63ffde99d67414a9), [#12280](https://github.com/angular/angular.js/issues/12280)) - **ngModel:** validate pattern against the viewValue ([0e001084](https://github.com/angular/angular.js/commit/0e001084ffff8674efad289d37cb16cc4e46b50a), [#12344](https://github.com/angular/angular.js/issues/12344)) - **ngResources:** support IPv6 URLs ([b643f0d3](https://github.com/angular/angular.js/commit/b643f0d3223a627ef813f0777524e25d2dd95371), [#12512](https://github.com/angular/angular.js/issues/12512), [#12532](https://github.com/angular/angular.js/issues/12532)) ## Breaking Changes - **ngModel:** due to [0e001084](https://github.com/angular/angular.js/commit/0e001084ffff8674efad289d37cb16cc4e46b50a), The `ngPattern` and `pattern` directives will validate the regex against the `viewValue` of `ngModel`, i.e. the value of the model before the $parsers are applied. Previously, the modelValue (the result of the $parsers) was validated. This fixes issues where `input[date]` and `input[number]` cannot be validated because the viewValue string is parsed into `Date` and `Number` respectively (starting with Angular 1.3). It also brings the directives in line with HTML5 constraint validation, which validates against the input value. This change is unlikely to cause applications to fail, because even in Angular 1.2, the value that was validated by pattern could have been manipulated by the $parsers, as all validation was done inside this pipeline. If you rely on the pattern being validated against the modelValue, you must create your own validator directive that overwrites the built-in pattern validator: ```js .directive('patternModelOverwrite', function patternModelOverwriteDirective() { return { restrict: 'A', require: '?ngModel', priority: 1, compile: function() { var regexp, patternExp; return { pre: function(scope, elm, attr, ctrl) { if (!ctrl) return; attr.$observe('pattern', function(regex) { /** * The built-in directive will call our overwritten validator * (see below). We just need to update the regex. * The preLink fn guarantees our observer is called first. */ if (isString(regex) && regex.length > 0) { regex = new RegExp('^' + regex + '$'); } if (regex && !regex.test) { //The built-in validator will throw at this point return; } regexp = regex || undefined; }); }, post: function(scope, elm, attr, ctrl) { if (!ctrl) return; regexp, patternExp = attr.ngPattern || attr.pattern; //The postLink fn guarantees we overwrite the built-in pattern validator ctrl.$validators.pattern = function(value) { return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value); }; } }; } }; }); ``` # 1.3.18 collective-penmanship (2015-08-18) ## Bug Fixes - **$animate:** - clear class animations cache if animation is not started ([2c03a357](https://github.com/angular/angular.js/commit/2c03a3574336ed814d020cf7ba36cee5b87e65b5), [#12604](https://github.com/angular/angular.js/issues/12604), [#12603](https://github.com/angular/angular.js/issues/12603)) - do not throw errors if element is removed before animation starts ([6b72598b](https://github.com/angular/angular.js/commit/6b72598b87022e1dd96bddc4451e007ef0601579), [#10205](https://github.com/angular/angular.js/issues/10205)) - **ngModel:** correct minErr usage for correct doc creation ([64a142b5](https://github.com/angular/angular.js/commit/64a142b58ed0a0e3896d82f3f9ce35373548d0ff), [#12386](https://github.com/angular/angular.js/issues/12386), [#12416](https://github.com/angular/angular.js/issues/12416)) # 1.4.4 pylon-requirement (2015-08-13) ## Bug Fixes - **$animate:** - leave animation callback should not overridden by follow-up animation ([92e41ac9](https://github.com/angular/angular.js/commit/92e41ac904b7d16e96fd31a49ac2ae15d606a665), [#12271](https://github.com/angular/angular.js/issues/12271), [#12249](https://github.com/angular/angular.js/issues/12249), [#12161](https://github.com/angular/angular.js/issues/12161)) - make sure to run a post-digest reflow for parentless animations ([861636c6](https://github.com/angular/angular.js/commit/861636c62542252a54fb2d2fa8ea9e17eefee120), [#12400](https://github.com/angular/angular.js/issues/12400), [#12401](https://github.com/angular/angular.js/issues/12401)) - ensure that class-based animations are properly applied when cancelled ([21d6db38](https://github.com/angular/angular.js/commit/21d6db382d8f3540fb0bb7280570fba8d88d9843), [#12266](https://github.com/angular/angular.js/issues/12266), [#12007](https://github.com/angular/angular.js/issues/12007)) - **$animateCss:** make sure that `skipBlocking` avoids the pre-emptive transition-delay styling ([11695ca6](https://github.com/angular/angular.js/commit/11695ca6e2ce5b21bb944ee0de80892203155cbb)) - **$compile:** - don't trigger $observer if initial value is `undefined` ([6f3b8622](https://github.com/angular/angular.js/commit/6f3b8622adce2006df5cf7eed4bf9262539004bd), [#12383](https://github.com/angular/angular.js/issues/12383), [#12464](https://github.com/angular/angular.js/issues/12464)) - ignore optional =-bound properties with empty value ([533d9b76](https://github.com/angular/angular.js/commit/533d9b76704368ba9700ab08589118abca9f598c), [#12144](https://github.com/angular/angular.js/issues/12144), [#12259](https://github.com/angular/angular.js/issues/12259), [#12290](https://github.com/angular/angular.js/issues/12290)) - **$injector:** Allows ES6 function syntax ([44a96a4c](https://github.com/angular/angular.js/commit/44a96a4c140873d9fd8484d870af83a0bb9acabd), [#12424](https://github.com/angular/angular.js/issues/12424), [#12425](https://github.com/angular/angular.js/issues/12425)) - **$location:** don't crash if navigating outside the app base ([9e492c35](https://github.com/angular/angular.js/commit/9e492c358c19549696577c86c2c61b93f50ab356), [#11667](https://github.com/angular/angular.js/issues/11667)) - **$q:** Use extend to avoid overwriting prototype ([3abb3fef](https://github.com/angular/angular.js/commit/3abb3fefe653df2a4cb730cface0049939c18efd), [#10697](https://github.com/angular/angular.js/issues/10697)) - **$rootScope:** don't clear phase if $apply is re-entered ([e0cf496f](https://github.com/angular/angular.js/commit/e0cf496f3cd6835db91546438def5bca1b6db4df), [#12174](https://github.com/angular/angular.js/issues/12174)) - **Angular:** allow unescaped `=` signs in values in `parseKeyValue` ([f13852c1](https://github.com/angular/angular.js/commit/f13852c179ffd9ec18b7a94df27dec39eb5f19fc), [#12351](https://github.com/angular/angular.js/issues/12351)) - **httpParamSerializerJQLike:** Follow jQuery for index of arrays of objects ([18a2e4fb](https://github.com/angular/angular.js/commit/18a2e4fbfc44216c31bbcdf7705ca87c53e6f1fa)) - **i18n:** by default put negative sign before currency symbol ([96f2e3be](https://github.com/angular/angular.js/commit/96f2e3bef5fc310edb2f6ed1addbcb7e1c1e71c2), [#10158](https://github.com/angular/angular.js/issues/10158)) - **injector:** check that modulesToLoad isArray. ([5abf593e](https://github.com/angular/angular.js/commit/5abf593e6b3535cc836c99db4018a4e2fc2dbc3b), [#12285](https://github.com/angular/angular.js/issues/12285)) - **input:** Firefox validation trigger ([e7423168](https://github.com/angular/angular.js/commit/e7423168fbf439a8798fdbbffb57955c272c2d74), [#12102](https://github.com/angular/angular.js/issues/12102)) - **merge:** regExp should not be treated as a objects when merging. ([a5221f32](https://github.com/angular/angular.js/commit/a5221f320a8c1644354003c0e78201add44f11e6), [#12419](https://github.com/angular/angular.js/issues/12419), [#12409](https://github.com/angular/angular.js/issues/12409)) - **ng/$locale:** by default put negative sign before currency symbol ([52986724](https://github.com/angular/angular.js/commit/5298672411cd7f5870e12185845cc2e9e3fe6949), [#10158](https://github.com/angular/angular.js/issues/10158)) - **ngAnimate:** - always apply a preparation reflow for CSS-based animations ([d33cedda](https://github.com/angular/angular.js/commit/d33cedda1624114d7e97a97b79705685c6cc40a2), [#12553](https://github.com/angular/angular.js/issues/12553), [#12554](https://github.com/angular/angular.js/issues/12554), [#12267](https://github.com/angular/angular.js/issues/12267), [#12554](https://github.com/angular/angular.js/issues/12554)) - ensure that only string-based addClass/removeClass values are applied ([0d6fc2dc](https://github.com/angular/angular.js/commit/0d6fc2dce57ac60dfebba6eefb571ef9afcd2189), [#12458](https://github.com/angular/angular.js/issues/12458), [#12459](https://github.com/angular/angular.js/issues/12459)) - ensure that parent class-based animations are never closed by their children ([32d3cbb3](https://github.com/angular/angular.js/commit/32d3cbb3aadf71492102f9318fcac570fb60bef8), [#11975](https://github.com/angular/angular.js/issues/11975), [#12276](https://github.com/angular/angular.js/issues/12276)) - allow animations on body and root elements ([44ce9c82](https://github.com/angular/angular.js/commit/44ce9c8288fc6c12043567027271a09bd0594d74), [#11956](https://github.com/angular/angular.js/issues/11956), [#12245](https://github.com/angular/angular.js/issues/12245)) - $timeout without invokeApply ([7db5f361](https://github.com/angular/angular.js/commit/7db5f361b0097a79255b90b26b5d700decf22f37), [#12281](https://github.com/angular/angular.js/issues/12281), [#12282](https://github.com/angular/angular.js/issues/12282)) - **ngCsp:** allow CSP to be configurable ([618356e4](https://github.com/angular/angular.js/commit/618356e481fcfeac74bfc9086332e25062fd8133), [#11933](https://github.com/angular/angular.js/issues/11933), [#8459](https://github.com/angular/angular.js/issues/8459), [#12346](https://github.com/angular/angular.js/issues/12346)) - **ngModel:** correct minErr usage for correct doc creation ([a268c29f](https://github.com/angular/angular.js/commit/a268c29fb019858155dac6692f351b64d43bb61c), [#12386](https://github.com/angular/angular.js/issues/12386), [#12416](https://github.com/angular/angular.js/issues/12416)) - **ngOptions:** allow empty option selection with multiple attribute ([c11a7d67](https://github.com/angular/angular.js/commit/c11a7d676f21c39916243b13eeaf47f44b40c8eb), [#12511](https://github.com/angular/angular.js/issues/12511), [#12541](https://github.com/angular/angular.js/issues/12541)) - **ngSanitize:** escape the wide char quote marks in a regex in linky.js ([39ff3332](https://github.com/angular/angular.js/commit/39ff3332a31b2db09e615ecea07634708cb46d7b), [#11609](https://github.com/angular/angular.js/issues/11609)) ## Features - **$animateCss:** expose a core version of `$animateCss` ([39b634e5](https://github.com/angular/angular.js/commit/39b634e50a9ed140649d4be119a291debe527d55), [#12509](https://github.com/angular/angular.js/issues/12509)) - **$httpProvider:** add 'useLegacyPromiseExtensions' configuration ([a8f7e9cf](https://github.com/angular/angular.js/commit/a8f7e9cfde82ed7eaba3a868d8acafdf57f2d76f), [#12112](https://github.com/angular/angular.js/issues/12112), [#10508](https://github.com/angular/angular.js/issues/10508)) - **orderBy:** Stable sort the input ([ed3a33a0](https://github.com/angular/angular.js/commit/ed3a33a063f09d7ca356d15c278d95ad82e680a0), [#12408](https://github.com/angular/angular.js/issues/12408), [#12405](https://github.com/angular/angular.js/issues/12405)) ## Performance Improvements - **$q:** small $q performance optimization ([6838c979](https://github.com/angular/angular.js/commit/6838c979451c109d959a15035177ccee715ccf19), [#12535](https://github.com/angular/angular.js/issues/12535)) ## Breaking Changes - **ngAnimate:** due to [32d3cbb3](https://github.com/angular/angular.js/commit/32d3cbb3aadf71492102f9318fcac570fb60bef8), CSS classes added/removed by ngAnimate are now applied synchronously once the first digest has passed. The previous behavior involved ngAnimate having to wait for one requestAnimationFrame before CSS classes were added/removed. The CSS classes are now applied directly after the first digest that is triggered after `$animate.addClass`, `$animate.removeClass` or `$animate.setClass` is called. If any of your code relies on waiting for one frame before checking for CSS classes on the element then please change this behavior. If a parent class-based animation, however, is run through a JavaScript animation which triggers an animation for `beforeAddClass` and/or `beforeRemoveClass` then the CSS classes will not be applied in time for the children (and the parent class-based animation will not be cancelled by any child animations). - **$q** due to [6838c979](https://github.com/angular/angular.js/commit/6838c979451c109d959a15035177ccee715ccf19), When writing tests, there is no need to call `$timeout.flush()` to resolve a call to `$q.when` with a value. The previous behavior involved creating an extra promise that needed to be resolved. This is no longer needed when `$q.when` is called with a value. In the case that the test is not aware if `$q.when` is called with a value or another promise, it is possible to replace `$timeout.flush();` with `$timeout.flush(0);`. ```js describe('$q.when', function() { it('should not need a call to $timeout.flush() to resolve already resolved promises', inject(function($q, $timeout) { $q.when('foo'); // In Angular 1.4.3 a call to `$timeout.flush();` was needed $timeout.verifyNoPendingTasks(); })); it('should accept $timeout.flush(0) when not sure if $q.when was called with a value or a promise', inject(function($q, $timeout) { $q.when('foo'); $timeout.flush(0); $timeout.verifyNoPendingTasks(); })); it('should need a call to $timeout.flush() to resolve $q.when when called with a promise', inject(function($q, $timeout) { $q.when($q.when('foo')); $timeout.flush(); $timeout.verifyNoPendingTasks(); })); }); ``` - **form:** Due to [94533e57](https://github.com/angular/angular.js/commit/94533e570673e6b2eb92073955541fa289aabe02), the `name` attribute of `form` elements can now only contain characters that can be evaluated as part of an Angular expression. This is because Angular uses the value of `name` as an assignable expression to set the form on the `$scope`. For example, `name="myForm"` assigns the form to `$scope.myForm` and `name="myObj.myForm"` assigns it to `$scope.myObj.myForm`. Previously, it was possible to also use names such `name="my:name"`, because Angular used a special setter function for the form name. Now the general, more robust `$parse` setter is used. The easiest way to migrate your code is therefore to remove all special characters from the `name` attribute. If you need to keep the special characters, you can use the following directive, which will replace the `name` with a value that can be evaluated as an expression in the compile function, and then re-set the original name in the postLink function. This ensures that (1), the form is published on the scope, and (2), the form has the original name, which might be important if you are doing server-side form submission. ```js angular.module('myApp').directive('form', function() { return { restrict: 'E', priority: 1000, compile: function(element, attrs) { var unsupportedCharacter = ':'; // change accordingly var originalName = attrs.name; if (attrs.name && attrs.name.indexOf(unsupportedCharacter) > 0) { attrs.$set('name', 'this["' + originalName + '"]'); } return postLinkFunction(scope, element) { // Don't trigger $observers element.setAttribute('name', originalName); } } }; }); ``` # 1.4.3 foam-acceleration (2015-07-15) ## Bug Fixes - **$animateCss:** ensure animations execute if only a keyframeStyle is provided ([97d79eec](https://github.com/angular/angular.js/commit/97d79eec80092f5fae3336c23aa881a72436de55), [#12124](https://github.com/angular/angular.js/issues/12124), [#12340](https://github.com/angular/angular.js/issues/12340)) - **loader:** define isFunction ([9ea52d81](https://github.com/angular/angular.js/commit/9ea52d818bcd2fb3ea8ccc85bf47f9fd5af68843)) - **ngAnimate:** ensure that orphaned elements do not throw errors when animated ([e4aeae0c](https://github.com/angular/angular.js/commit/e4aeae0c7303b94135e6df20e6c5e25f2aa0f586), [#11975](https://github.com/angular/angular.js/issues/11975), [#12338](https://github.com/angular/angular.js/issues/12338)) # 1.4.2 nebular-readjustment (2015-07-06) ## Bug Fixes - **$browser:** prevent infinite digest if changing hash when there is no hashPrefix ([f81ff3be](https://github.com/angular/angular.js/commit/f81ff3beb0c9d19d494c5878086fb57476442b8b), [#10423](https://github.com/angular/angular.js/issues/10423), [#12145](https://github.com/angular/angular.js/issues/12145)) - **$compile:** - throw error when requesting new and isolate scopes (async) ([6333d65b](https://github.com/angular/angular.js/commit/6333d65b76e0796cfbab8a2953af0c8014dba2e1), [#12215](https://github.com/angular/angular.js/issues/12215), [#12217](https://github.com/angular/angular.js/issues/12217)) - **$location:** allow navigating outside the original base URL ([6903b5ec](https://github.com/angular/angular.js/commit/6903b5ec4c04ed6b7c80ef7d638c48639ccdc4bb), [#11302](https://github.com/angular/angular.js/issues/11302), [#4776](https://github.com/angular/angular.js/issues/4776)) - **merge:** treat dates as atomic values instead of objects. ([6cbbd966](https://github.com/angular/angular.js/commit/6cbbd966479448591f819cbf904e0a3b757613dc), [#11720](https://github.com/angular/angular.js/issues/11720), [#11720](https://github.com/angular/angular.js/issues/11720)) - **ngOptions:** only watch numeric properties of an array ([14638f4a](https://github.com/angular/angular.js/commit/14638f4a60053b085565e597fc74bd31cf0d372b)) - **orderBy:** ensure correct ordering with arrays of objects and no predicate ([48e1f560](https://github.com/angular/angular.js/commit/48e1f5605edd32a63318fd78f5165c7d1f1a20f9), [#11866](https://github.com/angular/angular.js/issues/11866), [#11312](https://github.com/angular/angular.js/issues/11312), [#4282](https://github.com/angular/angular.js/issues/4282)) ## Features - **ngAria:** add option to disable role=button ([1f5e42e8](https://github.com/angular/angular.js/commit/1f5e42e8821217026ef36a46d36f84d7cd32830a), [#11580](https://github.com/angular/angular.js/issues/11580), [#12234](https://github.com/angular/angular.js/issues/12234)) ## Breaking Changes - **ngInclude:** due to [3c6e8ce044446735eb2e70d0061db8c6db050289](https://github.com/angular/angular.js/commit/3c6e8ce044446735eb2e70d0061db8c6db050289), the `src` attribute of ngInclude no longer accepts an expression that returns the result of `$sce.trustAsResourceUrl`. This will now cause an infinite digest: Before: ```html
``` ```js $scope.findTemplate = function(templateName) { return $sce.trustAsResourceUrl(templateName); }; ``` To migrate, either cache the result of `trustAsResourceUrl()`, or put the template url in the resource whitelist in the `config()` function: After: ```js var templateCache = {}; $scope.findTemplate = function(templateName) { if (!templateCache[templateName]) { templateCache[templateName] = $sce.trustAsResourceUrl(templateName); } return templateCache[templateName]; }; // Alternatively, use `$sceDelegateProvider.resourceUrlWhitelist()`: angular.module('myApp', []).config(function($sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist(['self', 'https://example.com/**']) }); ``` # 1.3.17 tsktskskly-euouae (2015-07-06) ## Bug Fixes - **$browser:** prevent infinite digest if changing hash when there is no hashPrefix ([61a3fb67](https://github.com/angular/angular.js/commit/61a3fb676a186e22564fb0181c17647b35ca4e5e), [#10423](https://github.com/angular/angular.js/issues/10423), [#12145](https://github.com/angular/angular.js/issues/12145)) - **$location:** - allow navigating outside the original base URL ([0bb57d53](https://github.com/angular/angular.js/commit/0bb57d538f25a1b6f20025d87a451c39671b59aa), [#11302](https://github.com/angular/angular.js/issues/11302), [#4776](https://github.com/angular/angular.js/issues/4776)) - do not get caught in infinite digest in IE9 ([f486ebe8](https://github.com/angular/angular.js/commit/f486ebe80b6d7854d3eb9029f14d94299cf493cb), [#11439](https://github.com/angular/angular.js/issues/11439), [#11675](https://github.com/angular/angular.js/issues/11675), [#11935](https://github.com/angular/angular.js/issues/11935), [#12083](https://github.com/angular/angular.js/issues/12083)) - **linky:** allow case insensitive scheme detection ([6b28aef1](https://github.com/angular/angular.js/commit/6b28aef1c537bfb2da21820d6ca154344efe266e), [#12073](https://github.com/angular/angular.js/issues/12073), [#12074](https://github.com/angular/angular.js/issues/12074)) # 1.4.1 hyperionic-illumination (2015-06-16) ## Bug Fixes - **$compile:** - workaround for IE11 MutationObserver ([f3b1d0b7](https://github.com/angular/angular.js/commit/f3b1d0b723298a5f8ea21d0704405649cce1b5fc), [#11781](https://github.com/angular/angular.js/issues/11781)) - prevent exception when using `watch` as isolated scope binding property in Firefox ([a6339d30](https://github.com/angular/angular.js/commit/a6339d30d1379689da5eec9647a953f64821f8b0), [#11627](https://github.com/angular/angular.js/issues/11627)) - assign controller return values correctly for multiple directives ([8caf1802](https://github.com/angular/angular.js/commit/8caf1802e0e93389dec626ef35e04a302aa6c39d), [#12029](https://github.com/angular/angular.js/issues/12029), [#12036](https://github.com/angular/angular.js/issues/12036)) - **$location:** do not get caught in infinite digest in IE9 when redirecting in `$locationChangeSuccess` ([91b60226](https://github.com/angular/angular.js/commit/91b602263b96b6fce1331208462e18eb647f4d60), [#11439](https://github.com/angular/angular.js/issues/11439), [#11675](https://github.com/angular/angular.js/issues/11675), [#11935](https://github.com/angular/angular.js/issues/11935), [#12083](https://github.com/angular/angular.js/issues/12083)) - **$parse:** set null reference properties to `undefined` ([71fc3f4f](https://github.com/angular/angular.js/commit/71fc3f4fa0cd12eff335d57efed7c033554749f4), [#12099](https://github.com/angular/angular.js/issues/12099)) ([d19504a1](https://github.com/angular/angular.js/commit/d19504a179355d7801d59a8db0285a1322e04601), [#11959](https://github.com/angular/angular.js/issues/11959)) - **$sanitize:** do not remove `tabindex` attribute ([799353c7](https://github.com/angular/angular.js/commit/799353c75de28e6fbf52dac6e0721e85b578575a), [#8371](https://github.com/angular/angular.js/issues/8371), [#5853](https://github.com/angular/angular.js/issues/5853)) - **copy:** do not copy the same object twice ([0e622f7b](https://github.com/angular/angular.js/commit/0e622f7b5bc3d5d0ab0fbc1a1bc69404bd7216d5)) - **forms:** parse exponential notation in `numberInputType` directive ([ebd0fbba](https://github.com/angular/angular.js/commit/ebd0fbba8ff90bee0cd016d574643d56a7f81ed0), [#12121](https://github.com/angular/angular.js/issues/12121), [#12122](https://github.com/angular/angular.js/issues/12122)) - **linky:** allow case insensitive scheme detection ([8dc09e6d](https://github.com/angular/angular.js/commit/8dc09e6dabb84c2c611cdc9e40adfac989648200), [#12073](https://github.com/angular/angular.js/issues/12073), [#12073](https://github.com/angular/angular.js/issues/12073)) - **ngAria:** - update `aria-valuemin/max` when `min/max` change ([ebaa0f59](https://github.com/angular/angular.js/commit/ebaa0f598501702ae64d59ada0ae492eaf0e2db6), [#11770](https://github.com/angular/angular.js/issues/11770), [#11774](https://github.com/angular/angular.js/issues/11774)) - ensure boolean values for aria-hidden and aria-disabled ([59273354](https://github.com/angular/angular.js/commit/59273354b57dd8d1ad2cd2f4740ffa8923e480f9), [#11365](https://github.com/angular/angular.js/issues/11365)) - **ngModel:** ignore Object.prototype properties on the form validation object ([0934b76b](https://github.com/angular/angular.js/commit/0934b76b72cec86093414834ac4cb7f0946b651d), [#12066](https://github.com/angular/angular.js/issues/12066)) - **ngOptions:** - do not watch properties starting with $ ([34a6da24](https://github.com/angular/angular.js/commit/34a6da24c17356d4ffc70aec3f621a140a9a61ab), [#11930](https://github.com/angular/angular.js/issues/11930), [#12010](https://github.com/angular/angular.js/issues/12010)) - use reference check only when not using trackBy ([d7dc14dc](https://github.com/angular/angular.js/commit/d7dc14dc0cdeb9c187d227e19acc8aca7df9d740), [#11936](https://github.com/angular/angular.js/issues/11936), [#11996](https://github.com/angular/angular.js/issues/11996)) ## Features - **$compile:** show module name during `multidir` error ([351fe4b7](https://github.com/angular/angular.js/commit/351fe4b79c50a45a11af2fcd2aa7b6fd3b70058d), [#11775](https://github.com/angular/angular.js/issues/11775)) - **$q:** $q.resolve as an alias for $q.when ([3ef52980](https://github.com/angular/angular.js/commit/3ef529806fef28b41ca4af86a330f39a95699cf6), [#11944](https://github.com/angular/angular.js/issues/11944), [#11987](https://github.com/angular/angular.js/issues/11987)) ## Performance Improvements - **$compile:** avoid jquery data calls when there is no data ([9efb0d5e](https://github.com/angular/angular.js/commit/9efb0d5ee961b57c8fc144a3138a15955e4010e2)) # 1.3.16 cookie-oatmealification (2015-06-05) ## Bug Fixes - **$compile:** throw error on invalid directive name ([634e4671](https://github.com/angular/angular.js/commit/634e467172efa696eb32ef8942ffbedeecbd030e), [#11281](https://github.com/angular/angular.js/issues/11281), [#11109](https://github.com/angular/angular.js/issues/11109)) - **$cookies:** update $cookies to prevent duplicate cookie writes and play nice with external code ([706a93ab](https://github.com/angular/angular.js/commit/706a93ab6960e3474698ccf9a8048b3c32e567c6), [#11490](https://github.com/angular/angular.js/issues/11490), [#11515](https://github.com/angular/angular.js/issues/11515)) - **$http:** throw error if `success` and `error` methods do not receive a function ([731e1f65](https://github.com/angular/angular.js/commit/731e1f6534ab7fd1e053b8d7a25c902fcd934fea), [#11330](https://github.com/angular/angular.js/issues/11330), [#11333](https://github.com/angular/angular.js/issues/11333)) - **core:** ensure that multiple requests to requestAnimationFrame are buffered ([0adc0364](https://github.com/angular/angular.js/commit/0adc0364265b06c567ccc8e90a7f09cc46f235b2), [#11791](https://github.com/angular/angular.js/issues/11791)) - **filterFilter:** fix matching against `null`/`undefined` ([9dd0fe35](https://github.com/angular/angular.js/commit/9dd0fe35d1027e59b84b2396abee00d8683f3b50), [#11573](https://github.com/angular/angular.js/issues/11573), [#11617](https://github.com/angular/angular.js/issues/11617)) - **jqLite:** - check for "length" in obj in isArrayLike to prevent iOS8 JIT bug from surfacing ([647f3f55](https://github.com/angular/angular.js/commit/647f3f55eb7100a255272f7277f0f962de234a32), [#11508](https://github.com/angular/angular.js/issues/11508)) - attr should ignore comment, text and attribute nodes ([181e5ebc](https://github.com/angular/angular.js/commit/181e5ebc3fce5312feacaeace4fcad0d32f4d73c)) - **ngAnimate:** - ensure that minified repaint code isn't removed ([d5c99ea4](https://github.com/angular/angular.js/commit/d5c99ea42b834343fd0362cfc572f47e7536ccfb), [#9936](https://github.com/angular/angular.js/issues/9936)) - **ngAria:** handle elements with role="checkbox/menuitemcheckbox" ([1c282af5](https://github.com/angular/angular.js/commit/1c282af5abc205d4aac37c05c5cb725d71747134), [#11317](https://github.com/angular/angular.js/issues/11317), [#11321](https://github.com/angular/angular.js/issues/11321)) - **ngModel:** allow setting model to NaN when asyncValidator is present ([b64519fe](https://github.com/angular/angular.js/commit/b64519fea7f1a5ec75e32c4b71b012b827314153), [#11315](https://github.com/angular/angular.js/issues/11315), [#11411](https://github.com/angular/angular.js/issues/11411)) - **ngTouch:** - check undefined tagName for SVG event target ([7560a8d2](https://github.com/angular/angular.js/commit/7560a8d2d65955ddb60ede9d586502f4e3cbd062)) - register touches properly when jQuery is used ([40441f6d](https://github.com/angular/angular.js/commit/40441f6dfc5ebd5cdc679c269c4639238f5351eb), [#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)) - **select:** prevent unknown option being added to select when bound to null property ([9e3f82bb](https://github.com/angular/angular.js/commit/9e3f82bbaf83cad7bb3121db756099b0880562e6), [#11872](https://github.com/angular/angular.js/issues/11872), [#11875](https://github.com/angular/angular.js/issues/11875)) ## Features - **travis:** run unit tests on iOS 8 ([1f650871](https://github.com/angular/angular.js/commit/1f650871266b88b3dab4a894a839a82ac9a06b69), [#11479](https://github.com/angular/angular.js/issues/11479)) # 1.4.0 jaracimrman-existence (2015-05-26) ## Bug Fixes - **$animate:** - ignore invalid option parameter values ([72edd4df](https://github.com/angular/angular.js/commit/72edd4dff931c644eecb8f0d1c878dc839c76947), [#11826](https://github.com/angular/angular.js/issues/11826)) - accept unwrapped DOM elements as inputs for enter + move ([f26fc26f](https://github.com/angular/angular.js/commit/f26fc26f6ea283b2fc5ddb18627b13850de2663e), [#11848](https://github.com/angular/angular.js/issues/11848)) - **$animateCss:** ensure that custom durations do not confuse the gcs cache ([e0e1b520](https://github.com/angular/angular.js/commit/e0e1b5208767dd62f5586fdc607cb2e31dac9516), [#11723](https://github.com/angular/angular.js/issues/11723), [#11852](https://github.com/angular/angular.js/issues/11852)) - **$http:** do not modify the config object passed into $http short methods ([f7a4b481](https://github.com/angular/angular.js/commit/f7a4b48121ed2b04af89bd2b754f500d1872360d)) - **ngAnimate:** - close follow-up class-based animations when the same class is added/removed when removed/added ([db246eb7](https://github.com/angular/angular.js/commit/db246eb701529b41049fc118908e528920f13b24), [#11717](https://github.com/angular/angular.js/issues/11717)) - ensure nested class-based animations are spaced out with a RAF ([213c2a70](https://github.com/angular/angular.js/commit/213c2a703293ee0af8229dde2b608687cd77ccfa), [#11812](https://github.com/angular/angular.js/issues/11812)) - class-based animations must not set addClass/removeClass CSS classes on the element ([3a3db690](https://github.com/angular/angular.js/commit/3a3db690a16e888aa7371e3b02e2954b9ec2d558), [#11810](https://github.com/angular/angular.js/issues/11810)) - ensure that repeated structural calls during pre-digest function ([2327f5a0](https://github.com/angular/angular.js/commit/2327f5a0a7e018a9b03aefabe1fbd0c9330e2eeb), [#11867](https://github.com/angular/angular.js/issues/11867)) - ensure that cancelled class-based animations are properly cleaned up ([718ff844](https://github.com/angular/angular.js/commit/718ff84405558ac64402e1fca5caefd7d307ea1e), [#11652](https://github.com/angular/angular.js/issues/11652)) - throw an error if a callback is passed to animate methods ([9bb4d6cc](https://github.com/angular/angular.js/commit/9bb4d6ccbe80b7704c6b7f53317ca8146bc103ca), [#11826](https://github.com/angular/angular.js/issues/11826), [#11713](https://github.com/angular/angular.js/issues/11713)) - ensure anchored animations remove the leave element at correct time ([64c66d0e](https://github.com/angular/angular.js/commit/64c66d0eea11b575d2a71d00c70cfc5be12cd450), [#11850](https://github.com/angular/angular.js/issues/11850)) - **select:** prevent unknown option being added to select when bound to null property ([4090491c](https://github.com/angular/angular.js/commit/4090491c73910c169d4fba0494a4e26b45dca7ec), [#11872](https://github.com/angular/angular.js/issues/11872), [#11875](https://github.com/angular/angular.js/issues/11875)) ## Features - **filterFilter:** allow array like objects to be filtered ([1b0d0fd8](https://github.com/angular/angular.js/commit/1b0d0fd8d00b42dffd798845fe0947d594372613), [#11782](https://github.com/angular/angular.js/issues/11782), [#11787](https://github.com/angular/angular.js/issues/11787)) # 1.4.0-rc.2 rocket-zambonimation (2015-05-12) ## Bug Fixes - **$compile:** ensure directive names have no leading or trailing whitespace ([bab474aa](https://github.com/angular/angular.js/commit/bab474aa8b146f6732857c3af1a8b3b010fda8b0), [#11397](https://github.com/angular/angular.js/issues/11397), [#11772](https://github.com/angular/angular.js/issues/11772)) - **$httpParamSerializerJQLike:** follow jQuery logic for nested params ([2420a0a7](https://github.com/angular/angular.js/commit/2420a0a77e27b530dbb8c41319b2995eccf76791), [#11551](https://github.com/angular/angular.js/issues/11551), [#11635](https://github.com/angular/angular.js/issues/11635)) - **jqLite:** check for "length" in obj in isArrayLike to prevent iOS8 JIT bug from surfacing ([426a5ac0](https://github.com/angular/angular.js/commit/426a5ac0547109648e5c5e358f668c274a111ab2), [#11508](https://github.com/angular/angular.js/issues/11508)) - **ngAnimate:** - ensure that multiple requests to requestAnimationFrame are buffered ([db20b830](https://github.com/angular/angular.js/commit/db20b830fc6074a00dc11d3f47d665c55e8bb515), [#11791](https://github.com/angular/angular.js/issues/11791)) - ensure that an object is always returned even when no animation is set to run ([d5683d21](https://github.com/angular/angular.js/commit/d5683d21165e725bc5a850e795f681b0a8a008f5)) - force use of `ng-anchor` instead of a suffixed `-anchor` CSS class when triggering anchor animations ([df24410c](https://github.com/angular/angular.js/commit/df24410c17d51a8d44929b9cffee2c91cedfed72)) - rename `ng-animate-anchor` to `ng-anchor` ([e6d053de](https://github.com/angular/angular.js/commit/e6d053de0993c0d38de46ad8a9c6760537316430)) - ensure that shared CSS classes between anchor nodes are retained ([e0014002](https://github.com/angular/angular.js/commit/e0014002370278778077d0612f9fab6beb80d07a), [#11681](https://github.com/angular/angular.js/issues/11681)) - prohibit usage of the `ng-animate` class with classNameFilter ([1002b80a](https://github.com/angular/angular.js/commit/1002b80a6fb5d98c424a01330234276d65d93c0b), [#11431](https://github.com/angular/angular.js/issues/11431), [#11807](https://github.com/angular/angular.js/issues/11807)) - ensure that the temporary CSS classes are applied before detection ([f7e9ff1a](https://github.com/angular/angular.js/commit/f7e9ff1aba9ed70835c084e6e154f6b0bf9c3a19), [#11769](https://github.com/angular/angular.js/issues/11769), [#11804](https://github.com/angular/angular.js/issues/11804)) - ensure that all jqLite elements are deconstructed properly ([64d05180](https://github.com/angular/angular.js/commit/64d05180a667e586328fbdbd328889d3b003571d), [#11658](https://github.com/angular/angular.js/issues/11658)) - ensure animations are not attempted on text nodes ([2aacc2d6](https://github.com/angular/angular.js/commit/2aacc2d622893e05eb94b3974d562e681cc3a17f), [#11703](https://github.com/angular/angular.js/issues/11703)) - ensure JS animations recognize $animateCss directly ([0681a540](https://github.com/angular/angular.js/commit/0681a5400e4150a961f9c8651e55623ca23b0cc2)) - **ngClass:** add/remove classes which are properties of Object.prototype ([f7b99970](https://github.com/angular/angular.js/commit/f7b999703f4f3bdaea035ce692f1a656b0c1a933), [#11813](https://github.com/angular/angular.js/issues/11813), [#11814](https://github.com/angular/angular.js/issues/11814)) - **ngOptions:** - ensure that tracked properties are always watched ([b5a9053b](https://github.com/angular/angular.js/commit/b5a9053ba33d48db2482ca6736d1fcae8b33d0f8), [#11784](https://github.com/angular/angular.js/issues/11784)) - ensure label is watched in all cases ([ae98dadf](https://github.com/angular/angular.js/commit/ae98dadf6dca3313746f42a441c7659654dd9d50), [#11765](https://github.com/angular/angular.js/issues/11765)) - iterate over the options collection in the same way as `ngRepeat` ([dfa722a8](https://github.com/angular/angular.js/commit/dfa722a8a6864793fd9580d8ae704a06d10b5509), [#11733](https://github.com/angular/angular.js/issues/11733)) - use watchCollection not deep watch of ngModel ([47f9fc3e](https://github.com/angular/angular.js/commit/47f9fc3e70bc361e8c11fe68dc3ec4489238efb3), [#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)) - **ngTouch:** - check undefined tagName for SVG event target ([74eb17d7](https://github.com/angular/angular.js/commit/74eb17d7c8232f72f134bf2546f10fed7234d276)) - don't prevent click event after a touchmove ([95521876](https://github.com/angular/angular.js/commit/95521876eb9eb330548b0549f0cfe22a26d88f6e), [#10985](https://github.com/angular/angular.js/issues/10985)) ## Features - **$resource:** include request context in error message ([266bc652](https://github.com/angular/angular.js/commit/266bc6520ba4d188dbc949643def102604f98905), [#11363](https://github.com/angular/angular.js/issues/11363)) ## Breaking Changes - **ngAnimate** - $animateCss: due to [d5683d21](https://github.com/angular/angular.js/commit/d5683d21165e725bc5a850e795f681b0a8a008f5), The $animateCss service will now always return an object even if the animation is not set to run. If your code is using $animateCss then please consider the following code change: ``` // before var animator = $animateCss(element, { ... }); if (!animator) { continueApp(); return; } var runner = animator.start(); runner.done(continueApp); runner.then(continueApp); // now var animator = $animateCss(element, { ... }); var runner = animator.start(); runner.done(continueApp); runner.then(continueApp); ``` - due to [df24410c](https://github.com/angular/angular.js/commit/df24410c17d51a8d44929b9cffee2c91cedfed72), Prior to this fix there were to ways to apply CSS animation code to an anchor animation. With this fix, the suffixed CSS -anchor classes are now not used anymore for CSS anchor animations. Instead just use the `ng-anchor` CSS class like so: ```html
``` **before**: ```css /* before (notice the container-animation CSS class) */ .container-animation-anchor { transition:0.5s linear all; } ``` **now**: ```css /* now (just use `ng-anchor` on a class that both the elements that contain `ng-animate-ref` share) */ .my-anchor-element.ng-anchor { transition:0.5s linear all; } ``` - due to [e6d053de](https://github.com/angular/angular.js/commit/e6d053de0993c0d38de46ad8a9c6760537316430), if your CSS code made use of the `ng-animate-anchor` CSS class for referencing the anchored animation element then your code must now use `ng-anchor` instead. - due to [1002b80a](https://github.com/angular/angular.js/commit/1002b80a6fb5d98c424a01330234276d65d93c0b), partially or fully using a regex value containing `ng-animate` as a token is not allowed anymore. Doing so will trigger a minErr exception to be thrown. So don't do this: ```js // only animate elements that contain the `ng-animate` CSS class $animateProvider.classNameFilter(/ng-animate/); // or partially contain it $animateProvider.classNameFilter(/some-class ng-animate another-class/); ``` but this is OK: ```js $animateProvider.classNameFilter(/ng-animate-special/); ``` - **ngOptions**: due to [dfa722a8](https://github.com/angular/angular.js/commit/dfa722a8a6864793fd9580d8ae704a06d10b5509), Although it is unlikely that anyone is using it in this way, this change does change the behavior of `ngOptions` in the following case: * you are iterating over an array-like object, using the array form of the `ngOptions` syntax (`item.label for item in items`) and that object contains non-numeric property keys. In this case these properties with non-numeric keys will be ignored. ** Here array-like is defined by the result of a call to this internal function: https://github.com/angular/angular.js/blob/v1.4.0-rc.1/src/Angular.js#L198-L211 ** To get the desired behavior you need to iterate using the object form of the `ngOptions` syntax (`value.label` for (key, value) in items)`). # v1.4.0-rc.1 sartorial-chronography (2015-04-24) ## Bug Fixes - **$animate:** - ensure that from styles are applied for class-based animations ([8f819d2c](https://github.com/angular/angular.js/commit/8f819d2cb5c8025b25534529a6e897dc8805885b)) - make sure the JS animation lookup is an object lookup ([103a39ca](https://github.com/angular/angular.js/commit/103a39ca8dad0300bead15c358aad846510b2229), [#11619](https://github.com/angular/angular.js/issues/11619)) - **$animateCss:** ensure that rAF waiting loop doesn't ignore pending items during a flush ([90e424b2](https://github.com/angular/angular.js/commit/90e424b206239e261024e8ef7fcac762236cd8b7)) - **$http:** stop coercing falsy HTTP request bodies to null / empty body ([e04a887c](https://github.com/angular/angular.js/commit/e04a887c9b506de18516600310fe6e529d9d2ca3), [#11552](https://github.com/angular/angular.js/issues/11552), [#11593](https://github.com/angular/angular.js/issues/11593)) - **ngAnimate:** - close parent animations only when there are classes to resolve ([1459be17](https://github.com/angular/angular.js/commit/1459be170dabfca40501dcf219dfced5ba513169)) - ensure ngClass-based classes are always resolved for CSS-enabled animations ([89f081e4](https://github.com/angular/angular.js/commit/89f081e452e9a75c2d3bf86bfef8b7f9bd1f2b0e)) - do not abort animation if only `ng-anchor-in` is used ([3333a5c3](https://github.com/angular/angular.js/commit/3333a5c380f830cba8efec5825cb6648f930f206)) - ensure that a filtered-out leave animation always runs its DOM operation ([6dd64ab5](https://github.com/angular/angular.js/commit/6dd64ab5f34fa19db8f90e6eabc810843089ba14), [#11555](https://github.com/angular/angular.js/issues/11555)) - ensure that animations work when the app is bootstrapped on the document node ([bee14ed1](https://github.com/angular/angular.js/commit/bee14ed1e7b77ea7dc62326611380da36dec297e), [#11574](https://github.com/angular/angular.js/issues/11574)) - ensure SVG classes are properly removed ([fa0bbded](https://github.com/angular/angular.js/commit/fa0bbded1ea040fbfdb1a4339e4a374fe9717a82)) - **ngAria:** change accessibility keypress event to use event.which if it is provided ([249f9b81](https://github.com/angular/angular.js/commit/249f9b81cbad5c57cf978a47842744aadd85cdb4), [#11340](https://github.com/angular/angular.js/issues/11340)) - **ngMessageFormat:** - ensure bindings are valid for Protractor ([992114f7](https://github.com/angular/angular.js/commit/992114f7a7f5f39778753e0c49458f14b6290ffc), [#11644](https://github.com/angular/angular.js/issues/11644), [#11649](https://github.com/angular/angular.js/issues/11649)) - minified symbol and nested required expression ([8a45064f](https://github.com/angular/angular.js/commit/8a45064f2bdec13ba3de5b0a0785df76188ab172), [#11414](https://github.com/angular/angular.js/issues/11414), [#11592](https://github.com/angular/angular.js/issues/11592)) - **select:** allow empty option to be added dynamically by ng-repeat ([abf59c28](https://github.com/angular/angular.js/commit/abf59c285c3ff6af20dbf4236eba5204ae735abb), [#11470](https://github.com/angular/angular.js/issues/11470), [#11512](https://github.com/angular/angular.js/issues/11512)) ## Features - **$animate:** provide support for animations on elements outside of $rootElement ([e41faaa2](https://github.com/angular/angular.js/commit/e41faaa2a155a42bcc66952497a6f33866878508)) # v1.4.0-rc.0 smooth-unwinding (2015-04-10) ## Bug Fixes - **$compile:** - throw error on invalid directive name ([170ff9a3](https://github.com/angular/angular.js/commit/170ff9a37dea8772dda7c89e84176ac1a8992878), [#11281](https://github.com/angular/angular.js/issues/11281), [#11109](https://github.com/angular/angular.js/issues/11109)) - update data() when controller returns custom value ([9900610e](https://github.com/angular/angular.js/commit/9900610eea4ece87b063f2aa9d82c75c369927df), [#11147](https://github.com/angular/angular.js/issues/11147), [#11326](https://github.com/angular/angular.js/issues/11326)) - **$http:** throw error if `success` and `error` methods do not receive a function ([1af563d4](https://github.com/angular/angular.js/commit/1af563d43e74cb7be53e815b66fd91dd93986ed6), [#11330](https://github.com/angular/angular.js/issues/11330), [#11333](https://github.com/angular/angular.js/issues/11333)) - **$parse:** fix parse errors on older Android WebViews which choke with reserved keywords ([10ae33b2](https://github.com/angular/angular.js/commit/10ae33b2d88b04df76f519edc50a47fa30f83e96), [#11455](https://github.com/angular/angular.js/issues/11455)) - **$rootScope:** allow destroying a root scope ([f8c8cf69](https://github.com/angular/angular.js/commit/f8c8cf698aa23640249d79fd405605694478e4f7), [#11241](https://github.com/angular/angular.js/issues/11241), [#10895](https://github.com/angular/angular.js/issues/10895)) - **cookieReader:** safely access $document so it can be mocked ([a057e089](https://github.com/angular/angular.js/commit/a057e0896a7fe2fdaba50b2515555b86e4f4be27), [#11373](https://github.com/angular/angular.js/issues/11373), [#11388](https://github.com/angular/angular.js/issues/11388)) - **filterFilter:** fix matching against `null`/`undefined` ([b5002ab6](https://github.com/angular/angular.js/commit/b5002ab62ad6e13f4339e20106e1fdece14912a2), [#11432](https://github.com/angular/angular.js/issues/11432), [#11445](https://github.com/angular/angular.js/issues/11445)) - **ngAnimate:** ensure that minified repaint code isn't removed ([c55a4944](https://github.com/angular/angular.js/commit/c55a494433e619aad0c7ef9fddadc0b3fdf53915), [#9936](https://github.com/angular/angular.js/issues/9936)) - **ngAria:** handle elements with role="checkbox/menuitemcheckbox" ([44337f63](https://github.com/angular/angular.js/commit/44337f63fa94116795e83e3a764a6ba6782809c7), [#11317](https://github.com/angular/angular.js/issues/11317), [#11321](https://github.com/angular/angular.js/issues/11321)) - **ngModel:** allow setting model to NaN when asyncValidator is present ([948120ec](https://github.com/angular/angular.js/commit/948120ecdbc4dd07880c0107564c50c7675b8a93), [#11315](https://github.com/angular/angular.js/issues/11315), [#11411](https://github.com/angular/angular.js/issues/11411)) - **ngTouch:** register touches properly when jQuery is used ([06a9f0a9](https://github.com/angular/angular.js/commit/06a9f0a95f0e72fa2e9879fe8a49e9bf69986a5f), [#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)) - **select:** don't call $render twice if $viewValue ref changes ([7e5c447f](https://github.com/angular/angular.js/commit/7e5c447fa9ad7d81cc818d6e79392c3e4a6b23a0), [#11329](https://github.com/angular/angular.js/issues/11329), [#11412](https://github.com/angular/angular.js/issues/11412)) ## Features - **$anchorScroll:** allow scrolling to a specified element ([731c8b5e](https://github.com/angular/angular.js/commit/731c8b5e2d01a44aa91f967f1a6acbadb8005a8b), [#4568](https://github.com/angular/angular.js/issues/4568), [#9596](https://github.com/angular/angular.js/issues/9596)) - **$animate:** complete refactor of internal animation code ([c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef)) - **$http:** support custom params serializers ([6c8464ad](https://github.com/angular/angular.js/commit/6c8464ad14dd308349f632245c1a064c9aae242a), [#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)) - **$interpolate:** extend interpolation with MessageFormat like syntax ([1e58488a](https://github.com/angular/angular.js/commit/1e58488ad65abf7031bab5813523bb9d86dbd28c), [#11152](https://github.com/angular/angular.js/issues/11152)) - **angular.Module:** add `decorator` method ([e57138d7](https://github.com/angular/angular.js/commit/e57138d7eff1210f99238c475fff57530bf0ab19), [#11305](https://github.com/angular/angular.js/issues/11305), [#11300](https://github.com/angular/angular.js/issues/11300)) - **ngClass:** add support for conditional map within an array. ([4588e627](https://github.com/angular/angular.js/commit/4588e627bb7238b2113241919b948d0e5166c76d), [#4807](https://github.com/angular/angular.js/issues/4807)) - **travis:** run unit tests on iOS 8 ([2cdb2016](https://github.com/angular/angular.js/commit/2cdb2016b9d89abfb5ab988b67d5f26f3bf21908), [#11479](https://github.com/angular/angular.js/issues/11479)) ## Performance Improvements - **$rootScope:** remove history event handler when app is torn down ([d996305b](https://github.com/angular/angular.js/commit/d996305b4470f80fbb1cbddf54b7d10ffbb6ab47), [#9897](https://github.com/angular/angular.js/issues/9897), [#9905](https://github.com/angular/angular.js/issues/9905)) - **benchmark:** add ngmodel benchmarks to largetable-bp ([b8dbdb0c](https://github.com/angular/angular.js/commit/b8dbdb0c5e2cd176c6d94d60f781cfc02e646592), [#11082](https://github.com/angular/angular.js/issues/11082)) - **ngOptions:** only perform deep equality check on ngModel if using track by ([171b9f7f](https://github.com/angular/angular.js/commit/171b9f7f2339ef9047b8526b2c3f36bb58d14feb), [#11448](https://github.com/angular/angular.js/issues/11448), [#11447](https://github.com/angular/angular.js/issues/11447)) ## Breaking Changes - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), JavaScript and CSS animations can no longer be run in parallel. With earlier versions of ngAnimate, both CSS and JS animations would be run together when multiple animations were detected. This feature has now been removed, however, the same effect, with even more possibilities, can be achieved by injecting `$animateCss` into a JavaScript-defined animation and creating custom CSS-based animations from there. Read the ngAnimate docs for more info. - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), The function params for `$animate.enabled()` when an element is used are now flipped. This fix allows the function to act as a getter when a single element param is provided. ```js // < 1.4 $animate.enabled(false, element); // 1.4+ $animate.enabled(element, false); ``` - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), In addition to disabling the children of the element, `$animate.enabled(element, false)` will now also disable animations on the element itself. - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), Animation-related callbacks are now fired on `$animate.on` instead of directly being on the element. ```js // < 1.4 element.on('$animate:before', function(e, data) { if (data.event === 'enter') { ... } }); element.off('$animate:before', fn); // 1.4+ $animate.on(element, 'enter', function(data) { //... }); $animate.off(element, 'enter', fn); ``` - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), There is no need to call `$scope.$apply` or `$scope.$digest` inside of an animation promise callback anymore since the promise is resolved within a digest automatically (but a digest is not run unless the promise is chained). ```js // < 1.4 $animate.enter(element).then(function() { $scope.$apply(function() { $scope.explode = true; }); }); // 1.4+ $animate.enter(element).then(function() { $scope.explode = true; }); ``` - **$animate:** due to [c8700f04](https://github.com/angular/angular.js/commit/c8700f04fb6fb5dc21ac24de8665c0476d6db5ef), When an enter, leave or move animation is triggered then it will always end any pending or active parent class based animations (animations triggered via ngClass) in order to ensure that any CSS styles are resolved in time. # 1.4.0-beta.6 cookie-liberation (2015-03-17) ## Bug Fixes - **$animate:** call `applyStyles` from options on `leave` ([4374f892](https://github.com/angular/angular.js/commit/4374f892c6fa4af6ba1f2ed47c5f888fdb5fadc5), [#10068](https://github.com/angular/angular.js/issues/10068)) - **$browser:** don't crash if `history.state` access causes error in IE ([3b8163b7](https://github.com/angular/angular.js/commit/3b8163b7b664f24499e75460ab50c066eaec0f78), [#10367](https://github.com/angular/angular.js/issues/10367), [#10369](https://github.com/angular/angular.js/issues/10369)) - **$sanitize:** disallow unsafe svg animation tags ([67688d5c](https://github.com/angular/angular.js/commit/67688d5ca00f6de4c7fe6084e2fa762a00d25610), [#11290](https://github.com/angular/angular.js/issues/11290)) - **Angular:** properly compare RegExp with other objects for equality ([f22e1fc9](https://github.com/angular/angular.js/commit/f22e1fc9610ae111a3ea8746a3a57169c99ce142), [#11204](https://github.com/angular/angular.js/issues/11204), [#11205](https://github.com/angular/angular.js/issues/11205)) - **date filter:** display localized era for `G` format codes ([2b4dfa9e](https://github.com/angular/angular.js/commit/2b4dfa9e2b63d7ebb78f3b0fd3439d18f932e1cd), [#10503](https://github.com/angular/angular.js/issues/10503), [#11266](https://github.com/angular/angular.js/issues/11266)) - **filterFilter:** - fix filtering using an object expression when the filter value is undefined ([c62fa6bd](https://github.com/angular/angular.js/commit/c62fa6bd898e1048d4690d41034489dc60ba6ac2), [#10419](https://github.com/angular/angular.js/issues/10419), [#10424](https://github.com/angular/angular.js/issues/10424)) - do not throw an error if property is null when comparing objects ([2c4ffd6a](https://github.com/angular/angular.js/commit/2c4ffd6af4eb012c4054fe7c096267bbc5510af0), [#10991](https://github.com/angular/angular.js/issues/10991), [#10992](https://github.com/angular/angular.js/issues/10992), [#11116](https://github.com/angular/angular.js/issues/11116)) - **form:** allow dynamic form names which initially evaluate to blank ([410f7c68](https://github.com/angular/angular.js/commit/410f7c682633c681be641cd2a321f9e51671d474)) - **jqLite:** attr should ignore comment, text and attribute nodes ([bb5bf7f8](https://github.com/angular/angular.js/commit/bb5bf7f8162d11610a53428e630b47030bdc38e5)) - **ng/$locale:** add ERA info in generic locale ([4acb0af2](https://github.com/angular/angular.js/commit/4acb0af24c7fb3705a197ca96adc532de4766a7a)) - **ngJq:** don't rely on existence of jqlite ([342e5f3c](https://github.com/angular/angular.js/commit/342e5f3ce38d2fd10c5d5a98ca66f864286a7922), [#11044](https://github.com/angular/angular.js/issues/11044)) - **ngMessages:** ensure that multi-level transclusion works with `ngMessagesInclude` ([d7ec5f39](https://github.com/angular/angular.js/commit/d7ec5f392e1550658ddf271a30627b1749eccb69), [#11196](https://github.com/angular/angular.js/issues/11196)) - **ngOptions:** fix model<->option interaction when using `track by` ([6a03ca27](https://github.com/angular/angular.js/commit/6a03ca274314352052c3082163367a146bb11c2d), [#10869](https://github.com/angular/angular.js/issues/10869), [#10893](https://github.com/angular/angular.js/issues/10893)) - **rootScope:** prevent memory leak when destroying scopes ([fb7db4a0](https://github.com/angular/angular.js/commit/fb7db4a07bd1b0b67824d3808fe315419b272689), [#11173](https://github.com/angular/angular.js/issues/11173), [#11169](https://github.com/angular/angular.js/issues/11169)) ## Features - **$cookies:** - allow passing cookie options ([92c366d2](https://github.com/angular/angular.js/commit/92c366d205da36ec26502aded23db71a6473dad7), [#8324](https://github.com/angular/angular.js/issues/8324), [#3988](https://github.com/angular/angular.js/issues/3988), [#1786](https://github.com/angular/angular.js/issues/1786), [#950](https://github.com/angular/angular.js/issues/950)) - move logic into $cookies and deprecate $cookieStore ([38fbe3ee](https://github.com/angular/angular.js/commit/38fbe3ee8370fc449b82d80df07b5c2ed2cd5fbe), [#6411](https://github.com/angular/angular.js/issues/6411), [#7631](https://github.com/angular/angular.js/issues/7631)) - **$cookiesProvider:** provide path, domain, expires and secure options ([53c66369](https://github.com/angular/angular.js/commit/53c663699126815eabc2a3bc1e3bafc8b3874268)) - **$interval:** pass additional arguments to the callback ([4f1f9cfd](https://github.com/angular/angular.js/commit/4f1f9cfdb721cf308ca1162b2227836dc1d28388), [#10632](https://github.com/angular/angular.js/issues/10632)) - **$timeout:** pass additional arguments to the callback ([3a4b6b83](https://github.com/angular/angular.js/commit/3a4b6b83efdb8051e5c4803c0892c19ceb2cba50), [#10631](https://github.com/angular/angular.js/issues/10631)) - **angular.merge:** provide an alternative to `angular.extend` that merges 'deeply' ([c0498d45](https://github.com/angular/angular.js/commit/c0498d45feb913c318224ea70b5adf7112df6bac), [#10507](https://github.com/angular/angular.js/issues/10507), [#10519](https://github.com/angular/angular.js/issues/10519)) - **filterFilter:** compare object with custom `toString()` to primitive ([f8c42161](https://github.com/angular/angular.js/commit/f8c421617096a8d613f4eb6d0f5b098ee149c029), [#10464](https://github.com/angular/angular.js/issues/10464), [#10548](https://github.com/angular/angular.js/issues/10548)) - **ngAria:** - add `button` role to `ngClick` ([bb365070](https://github.com/angular/angular.js/commit/bb365070a3ed7c2d26056d378ab6a8ef493b23cc), [#9254](https://github.com/angular/angular.js/issues/9254), [#10318](https://github.com/angular/angular.js/issues/10318)) - add roles to custom inputs ([29cdaee2](https://github.com/angular/angular.js/commit/29cdaee2b6e853bc3f8882a00661698d146ecd18), [#10012](https://github.com/angular/angular.js/issues/10012), [#10318](https://github.com/angular/angular.js/issues/10318)) - **ngLocale:** Add FIRSTDAYOFWEEK and WEEKENDRANGE from google data ([3d149c7f](https://github.com/angular/angular.js/commit/3d149c7f20ffabab5a635af9ddcfc7105112ab4a)) - **ngMock:** - allow mock $controller service to set up controller bindings ([d02d0585](https://github.com/angular/angular.js/commit/d02d0585a086ecd2e1de628218b5a6d85c8fc7bd), [#9425](https://github.com/angular/angular.js/issues/9425), [#11239](https://github.com/angular/angular.js/issues/11239)) - add `they` helpers for testing multiple specs ([e650c458](https://github.com/angular/angular.js/commit/e650c45894abe6314a806e6b3e32c908df5c00fd), [#10864](https://github.com/angular/angular.js/issues/10864)) - **ngModel:** support conversion to timezone other than UTC ([0413bee8](https://github.com/angular/angular.js/commit/0413bee8cc563a6555f8d42d5f183f6fbefc7350), [#11005](https://github.com/angular/angular.js/issues/11005)) ## Breaking Changes - **$cookies:** due to [38fbe3ee](https://github.com/angular/angular.js/commit/38fbe3ee8370fc449b82d80df07b5c2ed2cd5fbe), `$cookies` no longer exposes properties that represent the current browser cookie values. Now you must explicitly the methods described above to access the cookie values. This also means that you can no longer watch the `$cookies` properties for changes to the browser's cookies. This feature is generally only needed if a 3rd party library was programmatically changing the cookies at runtime. If you rely on this then you must either write code that can react to the 3rd party library making the changes to cookies or implement your own polling mechanism. # 1.3.15 locality-filtration (2015-03-17) ## Bug Fixes - **$animate:** call `applyStyles` with options on `leave` ([ebd84e80](https://github.com/angular/angular.js/commit/ebd84e8008f45ccaa84290f6da8c2a114fcfa8cd), [#10068](https://github.com/angular/angular.js/issues/10068)) - **$browser:** don't crash if history.state access causes error in IE ([92767c09](https://github.com/angular/angular.js/commit/92767c098feaf8c58faf2d67f882305019d8160e), [#10367](https://github.com/angular/angular.js/issues/10367), [#10369](https://github.com/angular/angular.js/issues/10369)) - **Angular:** properly compare RegExp with other objects for equality ([b8e8f9af](https://github.com/angular/angular.js/commit/b8e8f9af78f4ef3e556dd3cef6bfee35ad4cb82a), [#11204](https://github.com/angular/angular.js/issues/11204), [#11205](https://github.com/angular/angular.js/issues/11205)) - **date filter:** display localized era for `G` format codes ([f2683f95](https://github.com/angular/angular.js/commit/f2683f956fcd3216eaa263db20b31e0d46338800), [#10503](https://github.com/angular/angular.js/issues/10503), [#11266](https://github.com/angular/angular.js/issues/11266)) - **filterFilter:** - fix filtering using an object expression when the filter value is `undefined` ([63b9956f](https://github.com/angular/angular.js/commit/63b9956faf4c3679c88a9401b8ccbb111c0294ee), [#10419](https://github.com/angular/angular.js/issues/10419), [#10424](https://github.com/angular/angular.js/issues/10424)) - do not throw an error if property is null when comparing objects ([01161a0e](https://github.com/angular/angular.js/commit/01161a0e9fb1af93e9f06535aed8392ed7f116a4), [#10991](https://github.com/angular/angular.js/issues/10991), [#10992](https://github.com/angular/angular.js/issues/10992), [#11116](https://github.com/angular/angular.js/issues/11116)) - **form:** allow dynamic form names which initially evaluate to blank ([190ea883](https://github.com/angular/angular.js/commit/190ea883c588d63f8b900a8de1d45c6c9ebb01ec), [#11096](https://github.com/angular/angular.js/issues/11096)) - **ng/$locale:** add ERA info in generic locale ([57842530](https://github.com/angular/angular.js/commit/578425303f2480959da80f31920d08f277d42010)) - **rootScope:** prevent memory leak when destroying scopes ([528cf09e](https://github.com/angular/angular.js/commit/528cf09e3f78ad4e3bb6a329ebe315c4f29b4cdb), [#11173](https://github.com/angular/angular.js/issues/11173), [#11169](https://github.com/angular/angular.js/issues/11169)) - **templateRequest:** avoid throwing syntax error in Android 2.3 ([75abbd52](https://github.com/angular/angular.js/commit/75abbd525f07866fdcc6fb311802b8fe700af174), [#11089](https://github.com/angular/angular.js/issues/11089), [#11051](https://github.com/angular/angular.js/issues/11051), [#11088](https://github.com/angular/angular.js/issues/11088)) ## Features - **ngAria:** - add `button` role to `ngClick` ([b9ad91cf](https://github.com/angular/angular.js/commit/b9ad91cf1e86310a2d2bf13b29fa13a9b835e1ce), [#9254](https://github.com/angular/angular.js/issues/9254), [#10318](https://github.com/angular/angular.js/issues/10318)) - add roles to custom inputs ([21369943](https://github.com/angular/angular.js/commit/21369943fafd577b36827a641b021b1c14cefb57), [#10012](https://github.com/angular/angular.js/issues/10012), [#10318](https://github.com/angular/angular.js/issues/10318)) - **ngMock:** - allow mock $controller service to set up controller bindings ([b3878a36](https://github.com/angular/angular.js/commit/b3878a36d9f8e56ad7be1eedb9691c9bd12568cb), [#9425](https://github.com/angular/angular.js/issues/9425), [#11239](https://github.com/angular/angular.js/issues/11239)) - add `they` helpers for testing multiple specs ([7288be25](https://github.com/angular/angular.js/commit/7288be25a75d6ca6ac7eca05a7d6b12ccb3a22f8), [#10864](https://github.com/angular/angular.js/issues/10864)) # 1.4.0-beta.5 karmic-stabilization (2015-02-24) ## Bug Fixes - **$http:** properly access request headers with mixed case ([5da1256f](https://github.com/angular/angular.js/commit/5da1256fc2812d5b28fb0af0de81256054856369), [#10881](https://github.com/angular/angular.js/issues/10881), [#10883](https://github.com/angular/angular.js/issues/10883)) - **input:** create max and/or min validator regardless of initial value ([c211e7a5](https://github.com/angular/angular.js/commit/c211e7a5ad5f1fb8748125f14912aa8715081925), [#10307](https://github.com/angular/angular.js/issues/10307), [#10327](https://github.com/angular/angular.js/issues/10327)) - **ngAria:** correctly set "checked" attr for checkboxes and radios ([d6eba217](https://github.com/angular/angular.js/commit/d6eba21733c6e67e90e3a4763d8d41ad89a73a0c), [#10389](https://github.com/angular/angular.js/issues/10389), [#10212](https://github.com/angular/angular.js/issues/10212)) - **ngModel:** fix issues when parserName is same as validator key ([056a3170](https://github.com/angular/angular.js/commit/056a31700803c0a6014b43cfcc36c5c500cc596e), [#10698](https://github.com/angular/angular.js/issues/10698), [#10850](https://github.com/angular/angular.js/issues/10850), [#11046](https://github.com/angular/angular.js/issues/11046)) - **ngOptions:** ngModel is optional ([ef894c87](https://github.com/angular/angular.js/commit/ef894c87eaead76d90169113ab6acc9287654ea3)) - **ngSanitize:** Do not ignore white-listed svg camelCased attributes ([46b80654](https://github.com/angular/angular.js/commit/46b80654cae9105642909cd55f73f7c26d2fbd80), [#10779](https://github.com/angular/angular.js/issues/10779), [#10990](https://github.com/angular/angular.js/issues/10990), [#11124](https://github.com/angular/angular.js/issues/11124)) - **select:** remove unknown option when model is undefined and empty option is available ([30b48132](https://github.com/angular/angular.js/commit/30b48132e0fb92ea8dd25a9794b4c41a3a81a951), [#11078](https://github.com/angular/angular.js/issues/11078), [#11092](https://github.com/angular/angular.js/issues/11092)) - **templateRequest:** avoid throwing syntax error in Android 2.3 ([f6272333](https://github.com/angular/angular.js/commit/f6272333127d908b19da23f9cd8a74052711795b), [#11089](https://github.com/angular/angular.js/issues/11089), [#11051](https://github.com/angular/angular.js/issues/11051), [#11088](https://github.com/angular/angular.js/issues/11088)) ## Features - **CommonJS:** - angular modules are now packaged for npm with helpful exports - **limitTo:** extend the filter to take a beginning index argument ([aaae3cc4](https://github.com/angular/angular.js/commit/aaae3cc4160417e6dad802ed9d9f6d5471821a87), [#5355](https://github.com/angular/angular.js/issues/5355), [#10899](https://github.com/angular/angular.js/issues/10899)) - **ngMessages:** provide support for dynamic message resolution ([c9a4421f](https://github.com/angular/angular.js/commit/c9a4421fc3c97448527eadef1f42eb2f487ec2e0), [#10036](https://github.com/angular/angular.js/issues/10036), [#9338](https://github.com/angular/angular.js/issues/9338)) - **ngOptions:** add support for disabling an option ([da9eac86](https://github.com/angular/angular.js/commit/da9eac8660343b1cd9fdcf9d2d1bda06067142d7), [#638](https://github.com/angular/angular.js/issues/638), [#11017](https://github.com/angular/angular.js/issues/11017)) ## Performance Improvements - **$compile:** - replace forEach(controller) with plain loops ([5b522867](https://github.com/angular/angular.js/commit/5b5228675f67c8f5e04c7183c3ef5e71cb2bf08b), [#11084](https://github.com/angular/angular.js/issues/11084)) - avoid .data when fetching required controllers ([fa0aa839](https://github.com/angular/angular.js/commit/fa0aa83937378cf8fc720c38bcc5c78fc923624e)) - **ngOptions:** only watch labels if a display expression is specified ([51faaffd](https://github.com/angular/angular.js/commit/51faaffdbcc734c55d52ff6c42b386d5c90207ea)) ## Breaking Changes - **ngMessages:** due to [c9a4421f](https://github.com/angular/angular.js/commit/c9a4421fc3c97448527eadef1f42eb2f487ec2e0), The `ngMessagesInclude` attribute is now its own directive and that must be placed as a **child** element within the element with the ngMessages directive. (Keep in mind that the former behavior of the ngMessageInclude attribute was that all **included** ngMessage template code was placed at the **bottom** of the element containing the ngMessages directive; therefore to make this behave in the same way, place the element containing the ngMessagesInclude directive at the end of the container containing the ngMessages directive). ```html
Your message is required
Your message is required
``` - **ngMessages:** due to [c9a4421f](https://github.com/angular/angular.js/commit/c9a4421fc3c97448527eadef1f42eb2f487ec2e0), it is no longer possible to use interpolation inside the `ngMessages` attribute expression. This technique is generally not recommended, and can easily break when a directive implementation changes. In cases where a simple expression is not possible, you can delegate accessing the object to a function: ```html
...
``` would become ```html
...
``` where `ctrl.getMessages()` ```javascript ctrl.getMessages = function($index) { return ctrl.form['field_' + $index].$error; } ``` - **$http:** due to [5da1256](https://github.com/angular/angular.js/commit/5da1256fc2812d5b28fb0af0de81256054856369), `transformRequest` functions can no longer modify request headers. Before this commit `transformRequest` could modify request headers, ex.: ```javascript function requestTransform(data, headers) { headers = angular.extend(headers(), { 'X-MY_HEADER': 'abcd' }); } return angular.toJson(data); } ``` This behavior was unintended and undocumented, so the change should affect very few applications. If one needs to dynamically add / remove headers it should be done in a header function, for example: ```javascript $http.get(url, { headers: { 'X-MY_HEADER': function(config) { return 'abcd'; //you've got access to a request config object to specify header value dynamically } } }) ``` # 1.3.14 instantaneous-browserification (2015-02-24) ## Features - **CommonJS:** - angular modules are now packaged for npm with helpful exports ## Bug Fixes - **input:** create max and/or min validator regardless of initial value ([abfce532](https://github.com/angular/angular.js/commit/abfce5327ce6fd29c33c62d2edf3600674a6b4c0), [#10307](https://github.com/angular/angular.js/issues/10307), [#10327](https://github.com/angular/angular.js/issues/10327)) - **ngAria:** correctly set "checked" attr for checkboxes and radios ([944c150e](https://github.com/angular/angular.js/commit/944c150e6c3001e51d4bf5e2d8149ae4c565d1e3), [#10389](https://github.com/angular/angular.js/issues/10389), [#10212](https://github.com/angular/angular.js/issues/10212)) - **ngModel:** fix issues when parserName is same as validator key ([6b7625a0](https://github.com/angular/angular.js/commit/6b7625a09508c4b5355121a9d4206a734b07b2e1), [#10698](https://github.com/angular/angular.js/issues/10698), [#10850](https://github.com/angular/angular.js/issues/10850), [#11046](https://github.com/angular/angular.js/issues/11046)) # 1.4.0-beta.4 overlyexplosive-poprocks (2015-02-09) ## Bug Fixes - **$location:** prevent page reload if initial url has empty hash at the end ([a509e9aa](https://github.com/angular/angular.js/commit/a509e9aa149d0f88cc39f703d539f7ffd4cd6103), [#10397](https://github.com/angular/angular.js/issues/10397), [#10960](https://github.com/angular/angular.js/issues/10960)) - **$parse:** Initialize elements in an array from left to right ([966f6d83](https://github.com/angular/angular.js/commit/966f6d831f9469a917601f9a10604612cd7bd792)) - **ngAria:** ensure native controls fire a single click ([9d53e5a3](https://github.com/angular/angular.js/commit/9d53e5a38dd369dec82d82e13e078df3d6054c8a), [#10388](https://github.com/angular/angular.js/issues/10388), [#10766](https://github.com/angular/angular.js/issues/10766)) - **ngMock:** handle cases where injector is created before tests ([898714df](https://github.com/angular/angular.js/commit/898714df9ea38f9ef700015ced5ddea52f096b77), [#10967](https://github.com/angular/angular.js/issues/10967)) - **sanitize:** handle newline characters inside special tags ([cc8755cd](https://github.com/angular/angular.js/commit/cc8755cda6efda0b52954388e8a8d5306e4bfbca), [030a42e7](https://github.com/angular/angular.js/commit/030a42e79dec8a4bb73053762f7a54d797a058f6) [#10943](https://github.com/angular/angular.js/issues/10943)) ## Features - **ng-jq:** adds the ability to force jqLite or a specific jQuery version ([09ee82d8](https://github.com/angular/angular.js/commit/09ee82d84dcbea4a6e8d85903af82dcd087a78a7)) # 1.3.13 meticulous-riffleshuffle (2015-02-09) ## Bug Fixes - **$location:** prevent page reload if initial url has empty hash at the end ([4b3a590b](https://github.com/angular/angular.js/commit/4b3a590b009d7fdceda7f52e7ba0352a271b3256), [#10397](https://github.com/angular/angular.js/issues/10397), [#10960](https://github.com/angular/angular.js/issues/10960)) - **ngAria:** ensure native controls fire a single click ([69ee593f](https://github.com/angular/angular.js/commit/69ee593fd2cb5f1d7757efbe6b256e4458752fd7), [#10388](https://github.com/angular/angular.js/issues/10388), [#10766](https://github.com/angular/angular.js/issues/10766)) - **ngMock:** handle cases where injector is created before tests ([39ddef68](https://github.com/angular/angular.js/commit/39ddef682971d3b7282bf9d08f6eaf97b7f4bca4), [#10967](https://github.com/angular/angular.js/issues/10967)) - **sanitize:** handle newline characters inside special tags ([11aedbd7](https://github.com/angular/angular.js/commit/11aedbd741ccddba060a9805adba1779391731da), [ce49d4d6](https://github.com/angular/angular.js/commit/ce49d4d61bd02464b6c6376af8048f6eb09330a8) [#10943](https://github.com/angular/angular.js/issues/10943)) # 1.4.0-beta.3 substance-mimicry (2015-02-02) ## Bug Fixes - **$compile:** - do not initialize optional '&' binding if attribute not specified ([6a38dbfd](https://github.com/angular/angular.js/commit/6a38dbfd3c34c8f9efff503d17eb3cbeb666d422), [#6404](https://github.com/angular/angular.js/issues/6404), [#9216](https://github.com/angular/angular.js/issues/9216)) - respect return value from controller constructor ([62d514b0](https://github.com/angular/angular.js/commit/62d514b06937cc7dd86e973ea11165c88343b42d)) - **$controller:** throw better error when controller expression is bad ([dda65e99](https://github.com/angular/angular.js/commit/dda65e992b72044c0fa0c8f5f33184028c0e3ad7), [#10875](https://github.com/angular/angular.js/issues/10875), [#10910](https://github.com/angular/angular.js/issues/10910)) - **$parse:** - handle null targets at assign ([2e5a7e52](https://github.com/angular/angular.js/commit/2e5a7e52a0385575bbb55a801471b009afafeca3)) - remove references to last arguments to a fn call ([e61eae1b](https://github.com/angular/angular.js/commit/e61eae1b1f2351c51bcfe4142749a4e68a2806ff), [#10894](https://github.com/angular/angular.js/issues/10894)) - **a:** don't reload if there is only a name attribute ([d729fcf0](https://github.com/angular/angular.js/commit/d729fcf030be1d3ef37196d36ea3bf3249ee3318), [#6273](https://github.com/angular/angular.js/issues/6273), [#10880](https://github.com/angular/angular.js/issues/10880)) - **angular.copy:** support copying `TypedArray`s ([aa0f6449](https://github.com/angular/angular.js/commit/aa0f64496a66d2a5d1a4d033f2eb075a8b084a78), [#10745](https://github.com/angular/angular.js/issues/10745)) - **filter:** format timezone correctly in the case that UTC timezone is used ([8c469191](https://github.com/angular/angular.js/commit/8c46919199090a05634789774124b38983430c76), [#9359](https://github.com/angular/angular.js/issues/9359)) - **ngRoute:** don't duplicate optional params into query ([27bf2ce4](https://github.com/angular/angular.js/commit/27bf2ce40c5adfb1494d69c9d0ac9cf433834a12), [#10689](https://github.com/angular/angular.js/issues/10689)) - **ngScenario:** allow ngScenario to handle lazy-loaded and manually bootstrapped applications ([c69caa7b](https://github.com/angular/angular.js/commit/c69caa7beee4e920f8f587eb3e943be99864a14f), [#10723](https://github.com/angular/angular.js/issues/10723)) - **validators:** maxlength should use viewValue for $isEmpty ([bfcf9946](https://github.com/angular/angular.js/commit/bfcf9946e16d21b55dde50d4d21c71c898b10215), [#10898](https://github.com/angular/angular.js/issues/10898)) ## Features - **$compile:** allow using bindToController as object, support both new/isolate scopes ([35498d70](https://github.com/angular/angular.js/commit/35498d7045ba9138016464a344e2c145ce5264c1), [#10420](https://github.com/angular/angular.js/issues/10420), [#10467](https://github.com/angular/angular.js/issues/10467)) - **filter:** support conversion to timezone other than UTC ([c6d8512a](https://github.com/angular/angular.js/commit/c6d8512a1d7345516d1bd9a039d81821b9518bff), [#10858](https://github.com/angular/angular.js/issues/10858)) - **ngMocks:** cleanup $inject annotations after each test ([0baa17a3](https://github.com/angular/angular.js/commit/0baa17a3b7ad2b242df2b277b81cebdf75b04287)) ## Performance Improvements - **$scope:** Add a property $$watchersCount to scope ([c1500ea7](https://github.com/angular/angular.js/commit/c1500ea775c4cb130088b7d5bb5fb872bda50bae)) - **$parse** new and more performant parser ([0d42426](https://github.com/angular/angular.js/commit/0d424263ead16635afb582affab2b147f8e71626)) ## Breaking Changes - **$compile:** due to [6a38dbfd](https://github.com/angular/angular.js/commit/6a38dbfd3c34c8f9efff503d17eb3cbeb666d422), Previously, '&' expressions would always set up a function in the isolate scope. Now, if the binding is marked as optional and the attribute is not specified, no function will be added to the isolate scope. # 1.3.12 outlandish-knitting (2015-02-02) ## Bug Fixes - **$controller:** throw better error when controller expression is bad ([632b2ddd](https://github.com/angular/angular.js/commit/632b2ddd34c07b3b5a207bd83ca3a5e6e613e63b), [#10875](https://github.com/angular/angular.js/issues/10875), [#10910](https://github.com/angular/angular.js/issues/10910)) - **$parse:** remove references to last arguments to a fn call ([7caad220](https://github.com/angular/angular.js/commit/7caad2205a6e9927890192a3638f55532bdaaf75), [#10894](https://github.com/angular/angular.js/issues/10894)) - **ngRoute:** don't duplicate optional params into query ([f41ca4a5](https://github.com/angular/angular.js/commit/f41ca4a53ed53f172fb334911be56e42aad58794), [#10689](https://github.com/angular/angular.js/issues/10689)) - **ngScenario:** Allow ngScenario to handle lazy-loaded and manually bootstrapped applications ([0bcd0872](https://github.com/angular/angular.js/commit/0bcd0872d8d2e37e6cb7aa5bc5cb0c742b4294f9), [#10723](https://github.com/angular/angular.js/issues/10723)) - **validators:** maxlength should use viewValue for $isEmpty ([abd8e2a9](https://github.com/angular/angular.js/commit/abd8e2a9eb2d21ac67989c2f7b64c4c6547a1585), [#10898](https://github.com/angular/angular.js/issues/10898)) ## Features - **ngMocks:** cleanup $inject annotations after each test ([6ec59460](https://github.com/angular/angular.js/commit/6ec5946094ee92b820bbacc886fa2367715e60b4)) # 1.4.0-beta.2 holographic-rooster (2015-01-26) ## Bug Fixes - **$location:** don't rewrite when link is shift-clicked ([8b33de6f](https://github.com/angular/angular.js/commit/8b33de6fd0ec0eb785fed697f062763b5c1d8d23), [#9904](https://github.com/angular/angular.js/issues/9904), [#9906](https://github.com/angular/angular.js/issues/9906)) - **$templateRequest:** cache downloaded templates as strings ([b3a9bd3a](https://github.com/angular/angular.js/commit/b3a9bd3ae043e3042ea7ccfe08e3b36a84feb35e), [#10630](https://github.com/angular/angular.js/issues/10630), [#10646](https://github.com/angular/angular.js/issues/10646)) - **filterFilter:** throw error if input is not an array ([cea8e751](https://github.com/angular/angular.js/commit/cea8e75144e6910b806b63a6ec2a6d118316fddd), [#9992](https://github.com/angular/angular.js/issues/9992), [#10352](https://github.com/angular/angular.js/issues/10352)) - **htmlAnchorDirective:** - remove "element !== target element" check ([2958cd30](https://github.com/angular/angular.js/commit/2958cd308b5ebaf223a3e5df3fb5bf0f23408447), [#10866](https://github.com/angular/angular.js/issues/10866)) - don't add event listener if replaced, ignore event if target is different element ([b146af11](https://github.com/angular/angular.js/commit/b146af11271de8fa4c51c6db87df104269f41a33), [#4262](https://github.com/angular/angular.js/issues/4262), [#10849](https://github.com/angular/angular.js/issues/10849)) - **ngPluralize:** fix wrong text content when count is null/undefined ([3228d3b4](https://github.com/angular/angular.js/commit/3228d3b4991af681e57de5ab079c1e1c11cf35cb), [#10836](https://github.com/angular/angular.js/issues/10836), [#10841](https://github.com/angular/angular.js/issues/10841)) ## Breaking Changes - **filterFilter:** due to [cea8e751](https://github.com/angular/angular.js/commit/cea8e75144e6910b806b63a6ec2a6d118316fddd), Previously, the filter was not applied if used with a non array. Now, it throws an error. This can be worked around by converting an object to an array, using a filter such as https://github.com/petebacondarwin/angular-toArrayFilter Closes #9992 Closes #10352 # 1.3.11 spiffy-manatee (2015-01-26) ## Bug Fixes - **$location:** don't rewrite when link is shift-clicked ([939ca37c](https://github.com/angular/angular.js/commit/939ca37cfe5f6fc35b09b6705caabd1fcc3cf9d3), [#9904](https://github.com/angular/angular.js/issues/9904), [#9906](https://github.com/angular/angular.js/issues/9906)) - **htmlAnchorDirective:** - remove "element !== target element" check ([779e3f6b](https://github.com/angular/angular.js/commit/779e3f6b5f8d2550e758cb0c5f64187ba8e00e29), [#10866](https://github.com/angular/angular.js/issues/10866)) - don't add event listener if replaced, ignore event if target is different element ([837a0775](https://github.com/angular/angular.js/commit/837a077578081bbd07863bef85241537d19fa652), [#4262](https://github.com/angular/angular.js/issues/4262), [#10849](https://github.com/angular/angular.js/issues/10849)) # 1.4.0-beta.1 trepidatious-salamander (2015-01-20) ## Bug Fixes - **$animate:** ensure no transitions are applied when an empty inline style object is provided ([0db5b21b](https://github.com/angular/angular.js/commit/0db5b21b1d09431535e0c0bf8ac63d4b5b24d349), [#10613](https://github.com/angular/angular.js/issues/10613), [#10770](https://github.com/angular/angular.js/issues/10770)) - **$compile:** support class directives on SVG elements ([23c8a90d](https://github.com/angular/angular.js/commit/23c8a90d22f7c7b41b5a756b89498ffac828980a), [#10736](https://github.com/angular/angular.js/issues/10736), [#10756](https://github.com/angular/angular.js/issues/10756)) - **form:** clean up success state of controls when they are removed ([2408f2de](https://github.com/angular/angular.js/commit/2408f2ded5ead6e678c241e38ef474c1fadff92b), [#10509](https://github.com/angular/angular.js/issues/10509)) - **ngController:** allow bound constructor fns as controllers ([d17fbc38](https://github.com/angular/angular.js/commit/d17fbc3862e0a2e646db1222f184dbe663da4a1f), [#10784](https://github.com/angular/angular.js/issues/10784), [#10790](https://github.com/angular/angular.js/issues/10790)) - **ngRepeat:** do not sort object keys alphabetically ([c260e738](https://github.com/angular/angular.js/commit/c260e7386391877625eda086480de73e8a0ba921), [#6210](https://github.com/angular/angular.js/issues/6210), [#10538](https://github.com/angular/angular.js/issues/10538)) ## Features - **$http:** provide a config object as an argument to header functions ([d435464c](https://github.com/angular/angular.js/commit/d435464c51d3912f56cfc830d86bfc64a1578327), [#7235](https://github.com/angular/angular.js/issues/7235), [#10622](https://github.com/angular/angular.js/issues/10622)) ## Breaking Changes - **ngRepeat:** due to [c260e738](https://github.com/angular/angular.js/commit/c260e7386391877625eda086480de73e8a0ba921), Previously, the order of items when using ngRepeat to iterate over object properties was guaranteed to be consistent by sorting the keys into alphabetic order. Now, the order of the items is browser dependent based on the order returned from iterating over the object using the `for key in obj` syntax. It seems that browsers generally follow the strategy of providing keys in the order in which they were defined, although there are exceptions when keys are deleted and reinstated. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete#Cross-browser_issues The best approach is to convert Objects into Arrays by a filter such as https://github.com/petebacondarwin/angular-toArrayFilter or some other mechanism, and then sort them manually in the order you need. Closes #6210 Closes #10538 # 1.3.10 heliotropic-sundial (2015-01-20) ## Bug Fixes - **$animate:** ensure no transitions are applied when an empty inline style object is provided ([9b8df52a](https://github.com/angular/angular.js/commit/9b8df52aa960b9b6288fc150d55ea2e35f56555e), [#10613](https://github.com/angular/angular.js/issues/10613), [#10770](https://github.com/angular/angular.js/issues/10770)) - **$compile:** support class directives on SVG elements ([7a9e3360](https://github.com/angular/angular.js/commit/7a9e3360284d58197a1fe34de57f5e0f6d1f4a76), [#10736](https://github.com/angular/angular.js/issues/10736), [#10756](https://github.com/angular/angular.js/issues/10756)) - **form:** clean up success state of controls when they are removed ([cdc7280d](https://github.com/angular/angular.js/commit/cdc7280dd3d5a2ded784c06dd55fe36c2053fb6f), [#10509](https://github.com/angular/angular.js/issues/10509)) - **ngController:** allow bound constructor fns as controllers ([d015c8a8](https://github.com/angular/angular.js/commit/d015c8a80b28754633c846fc50d11c9437519486), [#10784](https://github.com/angular/angular.js/issues/10784), [#10790](https://github.com/angular/angular.js/issues/10790)) # 1.4.0-beta.0 photonic-umbrakinesis (2015-01-13) ## Bug Fixes - **$location:** support right button click on anchors in firefox ([aa798f12](https://github.com/angular/angular.js/commit/aa798f123658cb78b5581513d26577016195cafe), [#7984](https://github.com/angular/angular.js/issues/7984)) - **$templateRequest:** propagate HTTP status on failed requests ([e24f22bd](https://github.com/angular/angular.js/commit/e24f22bdb1740388938d58778aa24d307a79a796), [#10514](https://github.com/angular/angular.js/issues/10514), [#10628](https://github.com/angular/angular.js/issues/10628)) - **dateFilter:** ignore invalid dates ([1334b8c8](https://github.com/angular/angular.js/commit/1334b8c8326b93e0ca016c85516627900c7a9fd3), [#10640](https://github.com/angular/angular.js/issues/10640)) - **filterFilter:** use isArray() to determine array type ([a01ce6b8](https://github.com/angular/angular.js/commit/a01ce6b81c197b0a4a1057981e8e9c1b74f37587), [#10621](https://github.com/angular/angular.js/issues/10621)) - **ngChecked:** ensure that ngChecked doesn't interfere with ngModel ([e079111b](https://github.com/angular/angular.js/commit/e079111b33bf36be21c0941718b41cc9ca67bea0), [#10662](https://github.com/angular/angular.js/issues/10662), [#10664](https://github.com/angular/angular.js/issues/10664)) - **ngClass:** handle multi-class definitions as an element of an array ([e1132f53](https://github.com/angular/angular.js/commit/e1132f53b03a5a71aa9b6eded24d64e3bc83929b), [#8578](https://github.com/angular/angular.js/issues/8578), [#10651](https://github.com/angular/angular.js/issues/10651)) - **ngModelOptions:** allow sharing options between multiple inputs ([9c9c6b3f](https://github.com/angular/angular.js/commit/9c9c6b3fe4edfe78ae275c413ee3eefb81f1ebf6), [#10667](https://github.com/angular/angular.js/issues/10667)) - **ngOptions:** - support one-time binding on the option values ([ba90261b](https://github.com/angular/angular.js/commit/ba90261b7586b519483883800ea876510faf5c21), [#10687](https://github.com/angular/angular.js/issues/10687), [#10694](https://github.com/angular/angular.js/issues/10694)) - prevent infinite digest if track by expression is stable ([fc21db8a](https://github.com/angular/angular.js/commit/fc21db8a15545fad53124fc941b3c911a8d57067), [#9464](https://github.com/angular/angular.js/issues/9464)) - update model if selected option is removed ([933591d6](https://github.com/angular/angular.js/commit/933591d69cee2c5580da1d8522ba90a7d924da0e), [#7736](https://github.com/angular/angular.js/issues/7736)) - ensure that the correct option is selected when options are loaded async ([7fda214c](https://github.com/angular/angular.js/commit/7fda214c4f65a6a06b25cf5d5aff013a364e9cef), [#8019](https://github.com/angular/angular.js/issues/8019), [#9714](https://github.com/angular/angular.js/issues/9714), [#10639](https://github.com/angular/angular.js/issues/10639)) - **ngPluralize:** generate a warning when using a not defined rule ([c66b4b6a](https://github.com/angular/angular.js/commit/c66b4b6a133f7215d50c23db516986cfc1f0a985)) ## Features - **$filter:** display Infinity symbol when number is Infinity ([51d67742](https://github.com/angular/angular.js/commit/51d6774286202b55ade402ca097e417e70fd546b), [#10421](https://github.com/angular/angular.js/issues/10421)) - **$timeout:** allow `fn` to be an optional parameter ([5a603023](https://github.com/angular/angular.js/commit/5a60302389162c6ef45f311c1aaa65a00d538c66), [#9176](https://github.com/angular/angular.js/issues/9176)) - **limitTo:** ignore limit when invalid ([a3c3bf33](https://github.com/angular/angular.js/commit/a3c3bf3332e5685dc319c46faef882cb6ac246e1), [#10510](https://github.com/angular/angular.js/issues/10510)) - **ngMock/$exceptionHandler:** log errors when rethrowing ([deb3cb4d](https://github.com/angular/angular.js/commit/deb3cb4daef0054457bd9fb8995829fff0e8f1e4), [#10540](https://github.com/angular/angular.js/issues/10540), [#10564](https://github.com/angular/angular.js/issues/10564)) ## Performance Improvements - **ngStyleDirective:** use $watchCollection ([8928d023](https://github.com/angular/angular.js/commit/8928d0234551a272992d0eccef73b3ad6cb8bfd1), [#10535](https://github.com/angular/angular.js/issues/10535)) ## Breaking Changes - **limitTo:** due to [a3c3bf33](https://github.com/angular/angular.js/commit/a3c3bf3332e5685dc319c46faef882cb6ac246e1), limitTo changed behavior when limit value is invalid. Instead of returning empty object/array it returns unchanged input. - **ngOptions:** due to [7fda214c](https://github.com/angular/angular.js/commit/7fda214c4f65a6a06b25cf5d5aff013a364e9cef), When using `ngOptions`: the directive applies a surrogate key as the value of the `