angularjs-rails 1.3.14 → 1.3.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/angularjs-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/angular-animate.js +1 -1
  4. data/vendor/assets/javascripts/angular-aria.js +19 -4
  5. data/vendor/assets/javascripts/angular-cookies.js +1 -1
  6. data/vendor/assets/javascripts/angular-loader.js +2 -2
  7. data/vendor/assets/javascripts/angular-messages.js +4 -3
  8. data/vendor/assets/javascripts/angular-mocks.js +73 -1
  9. data/vendor/assets/javascripts/angular-resource.js +1 -1
  10. data/vendor/assets/javascripts/angular-route.js +1 -1
  11. data/vendor/assets/javascripts/angular-sanitize.js +12 -1
  12. data/vendor/assets/javascripts/angular-scenario.js +177 -49
  13. data/vendor/assets/javascripts/angular-touch.js +1 -1
  14. data/vendor/assets/javascripts/angular.js +177 -49
  15. data/vendor/assets/javascripts/unstable/angular-animate.js +1 -1
  16. data/vendor/assets/javascripts/unstable/angular-aria.js +19 -4
  17. data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
  18. data/vendor/assets/javascripts/unstable/angular-loader.js +2 -2
  19. data/vendor/assets/javascripts/unstable/angular-messages.js +4 -3
  20. data/vendor/assets/javascripts/unstable/angular-mocks.js +73 -1
  21. data/vendor/assets/javascripts/unstable/angular-resource.js +1 -1
  22. data/vendor/assets/javascripts/unstable/angular-route.js +1 -1
  23. data/vendor/assets/javascripts/unstable/angular-sanitize.js +12 -1
  24. data/vendor/assets/javascripts/unstable/angular-scenario.js +177 -49
  25. data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
  26. data/vendor/assets/javascripts/unstable/angular.js +177 -49
  27. metadata +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.14
2
+ * @license AngularJS v1.3.15
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.14
2
+ * @license AngularJS v1.3.15
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -54,7 +54,7 @@ function minErr(module, ErrorConstructor) {
54
54
  return match;
55
55
  });
56
56
 
57
- message = message + '\nhttp://errors.angularjs.org/1.3.14/' +
57
+ message = message + '\nhttp://errors.angularjs.org/1.3.15/' +
58
58
  (module ? module + '/' : '') + code;
59
59
  for (i = 2; i < arguments.length; i++) {
60
60
  message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
@@ -546,6 +546,12 @@ function isString(value) {return typeof value === 'string';}
546
546
  * @description
547
547
  * Determines if a reference is a `Number`.
548
548
  *
549
+ * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`.
550
+ *
551
+ * If you wish to exclude these then you can use the native
552
+ * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
553
+ * method.
554
+ *
549
555
  * @param {*} value Reference to check.
550
556
  * @returns {boolean} True if `value` is a `Number`.
551
557
  */
@@ -914,10 +920,11 @@ function equals(o1, o2) {
914
920
  } else if (isDate(o1)) {
915
921
  if (!isDate(o2)) return false;
916
922
  return equals(o1.getTime(), o2.getTime());
917
- } else if (isRegExp(o1) && isRegExp(o2)) {
918
- return o1.toString() == o2.toString();
923
+ } else if (isRegExp(o1)) {
924
+ return isRegExp(o2) ? o1.toString() == o2.toString() : false;
919
925
  } else {
920
- if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || isArray(o2)) return false;
926
+ if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
927
+ isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
921
928
  keySet = {};
922
929
  for (key in o1) {
923
930
  if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
@@ -2121,11 +2128,11 @@ function toDebugString(obj) {
2121
2128
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
2122
2129
  */
2123
2130
  var version = {
2124
- full: '1.3.14', // all of these placeholder strings will be replaced by grunt's
2131
+ full: '1.3.15', // all of these placeholder strings will be replaced by grunt's
2125
2132
  major: 1, // package task
2126
2133
  minor: 3,
2127
- dot: 14,
2128
- codeName: 'instantaneous-browserification'
2134
+ dot: 15,
2135
+ codeName: 'locality-filtration'
2129
2136
  };
2130
2137
 
2131
2138
 
@@ -2262,6 +2269,17 @@ function publishExternalAPI(angular) {
2262
2269
  ]);
2263
2270
  }
2264
2271
 
2272
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2273
+ * Any commits to this file should be reviewed with security in mind. *
2274
+ * Changes to this file can potentially create security vulnerabilities. *
2275
+ * An approval from 2 Core members with history of modifying *
2276
+ * this file is required. *
2277
+ * *
2278
+ * Does the change somehow allow for arbitrary javascript to be executed? *
2279
+ * Or allows for someone to change the prototype of built-in objects? *
2280
+ * Or gives undesired access to variables likes document or window? *
2281
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2282
+
2265
2283
  /* global JQLitePrototype: true,
2266
2284
  addEventListenerFn: true,
2267
2285
  removeEventListenerFn: true,
@@ -4685,6 +4703,7 @@ var $AnimateProvider = ['$provide', function($provide) {
4685
4703
  * @return {Promise} the animation callback promise
4686
4704
  */
4687
4705
  leave: function(element, options) {
4706
+ applyStyles(element, options);
4688
4707
  element.remove();
4689
4708
  return asyncPromise();
4690
4709
  },
@@ -5089,11 +5108,19 @@ function Browser(window, document, $log, $sniffer) {
5089
5108
  fireUrlChange();
5090
5109
  }
5091
5110
 
5111
+ function getCurrentState() {
5112
+ try {
5113
+ return history.state;
5114
+ } catch (e) {
5115
+ // MSIE can reportedly throw when there is no state (UNCONFIRMED).
5116
+ }
5117
+ }
5118
+
5092
5119
  // This variable should be used *only* inside the cacheState function.
5093
5120
  var lastCachedState = null;
5094
5121
  function cacheState() {
5095
5122
  // This should be the only place in $browser where `history.state` is read.
5096
- cachedState = window.history.state;
5123
+ cachedState = getCurrentState();
5097
5124
  cachedState = isUndefined(cachedState) ? null : cachedState;
5098
5125
 
5099
5126
  // Prevent callbacks fo fire twice if both hashchange & popstate were fired.
@@ -5690,7 +5717,7 @@ function $CacheFactoryProvider() {
5690
5717
  * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE,
5691
5718
  * element with ng-app attribute), otherwise the template will be ignored.
5692
5719
  *
5693
- * Adding via the $templateCache service:
5720
+ * Adding via the `$templateCache` service:
5694
5721
  *
5695
5722
  * ```js
5696
5723
  * var myApp = angular.module('myApp', []);
@@ -5718,6 +5745,17 @@ function $TemplateCacheProvider() {
5718
5745
  }];
5719
5746
  }
5720
5747
 
5748
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
5749
+ * Any commits to this file should be reviewed with security in mind. *
5750
+ * Changes to this file can potentially create security vulnerabilities. *
5751
+ * An approval from 2 Core members with history of modifying *
5752
+ * this file is required. *
5753
+ * *
5754
+ * Does the change somehow allow for arbitrary javascript to be executed? *
5755
+ * Or allows for someone to change the prototype of built-in objects? *
5756
+ * Or gives undesired access to variables likes document or window? *
5757
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5758
+
5721
5759
  /* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!
5722
5760
  *
5723
5761
  * DOM-related variables:
@@ -5929,7 +5967,8 @@ function $TemplateCacheProvider() {
5929
5967
  * Require another directive and inject its controller as the fourth argument to the linking function. The
5930
5968
  * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the
5931
5969
  * injected argument will be an array in corresponding order. If no such directive can be
5932
- * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:
5970
+ * found, or if the directive does not have a controller, then an error is raised (unless no link function
5971
+ * is specified, in which case error checking is skipped). The name can be prefixed with:
5933
5972
  *
5934
5973
  * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
5935
5974
  * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
@@ -10479,7 +10518,15 @@ function $LocaleProvider() {
10479
10518
  mediumDate: 'MMM d, y',
10480
10519
  shortDate: 'M/d/yy',
10481
10520
  mediumTime: 'h:mm:ss a',
10482
- shortTime: 'h:mm a'
10521
+ shortTime: 'h:mm a',
10522
+ ERANAMES: [
10523
+ "Before Christ",
10524
+ "Anno Domini"
10525
+ ],
10526
+ ERAS: [
10527
+ "BC",
10528
+ "AD"
10529
+ ]
10483
10530
  },
10484
10531
 
10485
10532
  pluralCat: function(num) {
@@ -11487,6 +11534,7 @@ function $LocationProvider() {
11487
11534
  <button ng-click="$log.warn(message)">warn</button>
11488
11535
  <button ng-click="$log.info(message)">info</button>
11489
11536
  <button ng-click="$log.error(message)">error</button>
11537
+ <button ng-click="$log.debug(message)">debug</button>
11490
11538
  </div>
11491
11539
  </file>
11492
11540
  </example>
@@ -11617,6 +11665,17 @@ function $LogProvider() {
11617
11665
  }];
11618
11666
  }
11619
11667
 
11668
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
11669
+ * Any commits to this file should be reviewed with security in mind. *
11670
+ * Changes to this file can potentially create security vulnerabilities. *
11671
+ * An approval from 2 Core members with history of modifying *
11672
+ * this file is required. *
11673
+ * *
11674
+ * Does the change somehow allow for arbitrary javascript to be executed? *
11675
+ * Or allows for someone to change the prototype of built-in objects? *
11676
+ * Or gives undesired access to variables likes document or window? *
11677
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
11678
+
11620
11679
  var $parseMinErr = minErr('$parse');
11621
11680
 
11622
11681
  // Sandboxing Angular Expressions
@@ -13552,9 +13611,27 @@ function $RootScopeProvider() {
13552
13611
  return TTL;
13553
13612
  };
13554
13613
 
13614
+ function createChildScopeClass(parent) {
13615
+ function ChildScope() {
13616
+ this.$$watchers = this.$$nextSibling =
13617
+ this.$$childHead = this.$$childTail = null;
13618
+ this.$$listeners = {};
13619
+ this.$$listenerCount = {};
13620
+ this.$$watchersCount = 0;
13621
+ this.$id = nextUid();
13622
+ this.$$ChildScope = null;
13623
+ }
13624
+ ChildScope.prototype = parent;
13625
+ return ChildScope;
13626
+ }
13627
+
13555
13628
  this.$get = ['$injector', '$exceptionHandler', '$parse', '$browser',
13556
13629
  function($injector, $exceptionHandler, $parse, $browser) {
13557
13630
 
13631
+ function destroyChildScope($event) {
13632
+ $event.currentScope.$$destroyed = true;
13633
+ }
13634
+
13558
13635
  /**
13559
13636
  * @ngdoc type
13560
13637
  * @name $rootScope.Scope
@@ -13677,15 +13754,7 @@ function $RootScopeProvider() {
13677
13754
  // Only create a child scope class if somebody asks for one,
13678
13755
  // but cache it to allow the VM to optimize lookups.
13679
13756
  if (!this.$$ChildScope) {
13680
- this.$$ChildScope = function ChildScope() {
13681
- this.$$watchers = this.$$nextSibling =
13682
- this.$$childHead = this.$$childTail = null;
13683
- this.$$listeners = {};
13684
- this.$$listenerCount = {};
13685
- this.$id = nextUid();
13686
- this.$$ChildScope = null;
13687
- };
13688
- this.$$ChildScope.prototype = this;
13757
+ this.$$ChildScope = createChildScopeClass(this);
13689
13758
  }
13690
13759
  child = new this.$$ChildScope();
13691
13760
  }
@@ -13703,13 +13772,9 @@ function $RootScopeProvider() {
13703
13772
  // prototypically. In all other cases, this property needs to be set
13704
13773
  // when the parent scope is destroyed.
13705
13774
  // The listener needs to be added after the parent is set
13706
- if (isolate || parent != this) child.$on('$destroy', destroyChild);
13775
+ if (isolate || parent != this) child.$on('$destroy', destroyChildScope);
13707
13776
 
13708
13777
  return child;
13709
-
13710
- function destroyChild() {
13711
- child.$$destroyed = true;
13712
- }
13713
13778
  },
13714
13779
 
13715
13780
  /**
@@ -14870,6 +14935,17 @@ function $$SanitizeUriProvider() {
14870
14935
  };
14871
14936
  }
14872
14937
 
14938
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
14939
+ * Any commits to this file should be reviewed with security in mind. *
14940
+ * Changes to this file can potentially create security vulnerabilities. *
14941
+ * An approval from 2 Core members with history of modifying *
14942
+ * this file is required. *
14943
+ * *
14944
+ * Does the change somehow allow for arbitrary javascript to be executed? *
14945
+ * Or allows for someone to change the prototype of built-in objects? *
14946
+ * Or gives undesired access to variables likes document or window? *
14947
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
14948
+
14873
14949
  var $sceMinErr = minErr('$sce');
14874
14950
 
14875
14951
  var SCE_CONTEXTS = {
@@ -16045,7 +16121,7 @@ function $TemplateRequestProvider() {
16045
16121
  };
16046
16122
 
16047
16123
  return $http.get(tpl, httpOptions)
16048
- .finally(function() {
16124
+ ['finally'](function() {
16049
16125
  handleRequestFn.totalPendingRequests--;
16050
16126
  })
16051
16127
  .then(function(response) {
@@ -16741,8 +16817,8 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) {
16741
16817
  }
16742
16818
 
16743
16819
  function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) {
16744
- var actualType = typeof actual;
16745
- var expectedType = typeof expected;
16820
+ var actualType = (actual !== null) ? typeof actual : 'null';
16821
+ var expectedType = (expected !== null) ? typeof expected : 'null';
16746
16822
 
16747
16823
  if ((expectedType === 'string') && (expected.charAt(0) === '!')) {
16748
16824
  return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp);
@@ -16767,7 +16843,7 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc
16767
16843
  } else if (expectedType === 'object') {
16768
16844
  for (key in expected) {
16769
16845
  var expectedVal = expected[key];
16770
- if (isFunction(expectedVal)) {
16846
+ if (isFunction(expectedVal) || isUndefined(expectedVal)) {
16771
16847
  continue;
16772
16848
  }
16773
16849
 
@@ -17081,6 +17157,14 @@ function ampmGetter(date, formats) {
17081
17157
  return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1];
17082
17158
  }
17083
17159
 
17160
+ function eraGetter(date, formats) {
17161
+ return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1];
17162
+ }
17163
+
17164
+ function longEraGetter(date, formats) {
17165
+ return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1];
17166
+ }
17167
+
17084
17168
  var DATE_FORMATS = {
17085
17169
  yyyy: dateGetter('FullYear', 4),
17086
17170
  yy: dateGetter('FullYear', 2, 0, true),
@@ -17107,10 +17191,14 @@ var DATE_FORMATS = {
17107
17191
  a: ampmGetter,
17108
17192
  Z: timeZoneGetter,
17109
17193
  ww: weekGetter(2),
17110
- w: weekGetter(1)
17194
+ w: weekGetter(1),
17195
+ G: eraGetter,
17196
+ GG: eraGetter,
17197
+ GGG: eraGetter,
17198
+ GGGG: longEraGetter
17111
17199
  };
17112
17200
 
17113
- var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
17201
+ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
17114
17202
  NUMBER_STRING = /^\-?\d+$/;
17115
17203
 
17116
17204
  /**
@@ -17147,6 +17235,8 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d
17147
17235
  * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
17148
17236
  * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
17149
17237
  * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year
17238
+ * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD')
17239
+ * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini')
17150
17240
  *
17151
17241
  * `format` string can also be one of the following predefined
17152
17242
  * {@link guide/i18n localizable formats}:
@@ -17480,6 +17570,43 @@ function limitToFilter() {
17480
17570
  * @param {boolean=} reverse Reverse the order of the array.
17481
17571
  * @returns {Array} Sorted copy of the source array.
17482
17572
  *
17573
+ *
17574
+ * @example
17575
+ * The example below demonstrates a simple ngRepeat, where the data is sorted
17576
+ * by age in descending order (predicate is set to `'-age'`).
17577
+ * `reverse` is not set, which means it defaults to `false`.
17578
+ <example module="orderByExample">
17579
+ <file name="index.html">
17580
+ <script>
17581
+ angular.module('orderByExample', [])
17582
+ .controller('ExampleController', ['$scope', function($scope) {
17583
+ $scope.friends =
17584
+ [{name:'John', phone:'555-1212', age:10},
17585
+ {name:'Mary', phone:'555-9876', age:19},
17586
+ {name:'Mike', phone:'555-4321', age:21},
17587
+ {name:'Adam', phone:'555-5678', age:35},
17588
+ {name:'Julie', phone:'555-8765', age:29}];
17589
+ }]);
17590
+ </script>
17591
+ <div ng-controller="ExampleController">
17592
+ <table class="friend">
17593
+ <tr>
17594
+ <th>Name</th>
17595
+ <th>Phone Number</th>
17596
+ <th>Age</th>
17597
+ </tr>
17598
+ <tr ng-repeat="friend in friends | orderBy:'-age'">
17599
+ <td>{{friend.name}}</td>
17600
+ <td>{{friend.phone}}</td>
17601
+ <td>{{friend.age}}</td>
17602
+ </tr>
17603
+ </table>
17604
+ </div>
17605
+ </file>
17606
+ </example>
17607
+ *
17608
+ * The predicate and reverse parameters can be controlled dynamically through scope properties,
17609
+ * as shown in the next example.
17483
17610
  * @example
17484
17611
  <example module="orderByExample">
17485
17612
  <file name="index.html">
@@ -17862,6 +17989,7 @@ var htmlAnchorDirective = valueFn({
17862
17989
  * but not on older IEs:
17863
17990
  *
17864
17991
  * ```html
17992
+ * <!-- See below for an example of ng-disabled being used correctly -->
17865
17993
  * <div ng-init="isDisabled = false">
17866
17994
  * <button disabled="{{isDisabled}}">Disabled</button>
17867
17995
  * </div>
@@ -18437,7 +18565,7 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
18437
18565
  *
18438
18566
  * # Alias: {@link ng.directive:ngForm `ngForm`}
18439
18567
  *
18440
- * In Angular forms can be nested. This means that the outer form is valid when all of the child
18568
+ * In Angular, forms can be nested. This means that the outer form is valid when all of the child
18441
18569
  * forms are valid as well. However, browsers do not allow nesting of `<form>` elements, so
18442
18570
  * Angular provides the {@link ng.directive:ngForm `ngForm`} directive which behaves identically to
18443
18571
  * `<form>` but can be nested. This allows you to have nested forms, which is very useful when
@@ -18575,10 +18703,12 @@ var formDirectiveFactory = function(isNgForm) {
18575
18703
  name: 'form',
18576
18704
  restrict: isNgForm ? 'EAC' : 'E',
18577
18705
  controller: FormController,
18578
- compile: function ngFormCompile(formElement) {
18706
+ compile: function ngFormCompile(formElement, attr) {
18579
18707
  // Setup initial state of the control
18580
18708
  formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);
18581
18709
 
18710
+ var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false);
18711
+
18582
18712
  return {
18583
18713
  pre: function ngFormPreLink(scope, formElement, attr, controller) {
18584
18714
  // if `action` attr is not present on the form, prevent the default action (submission)
@@ -18609,23 +18739,21 @@ var formDirectiveFactory = function(isNgForm) {
18609
18739
  });
18610
18740
  }
18611
18741
 
18612
- var parentFormCtrl = controller.$$parentForm,
18613
- alias = controller.$name;
18614
-
18615
- if (alias) {
18616
- setter(scope, null, alias, controller, alias);
18617
- attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) {
18618
- if (alias === newValue) return;
18619
- setter(scope, null, alias, undefined, alias);
18620
- alias = newValue;
18621
- setter(scope, null, alias, controller, alias);
18622
- parentFormCtrl.$$renameControl(controller, alias);
18742
+ var parentFormCtrl = controller.$$parentForm;
18743
+
18744
+ if (nameAttr) {
18745
+ setter(scope, null, controller.$name, controller, controller.$name);
18746
+ attr.$observe(nameAttr, function(newValue) {
18747
+ if (controller.$name === newValue) return;
18748
+ setter(scope, null, controller.$name, undefined, controller.$name);
18749
+ parentFormCtrl.$$renameControl(controller, newValue);
18750
+ setter(scope, null, controller.$name, controller, controller.$name);
18623
18751
  });
18624
18752
  }
18625
18753
  formElement.on('$destroy', function() {
18626
18754
  parentFormCtrl.$removeControl(controller);
18627
- if (alias) {
18628
- setter(scope, null, alias, undefined, alias);
18755
+ if (nameAttr) {
18756
+ setter(scope, null, attr[nameAttr], undefined, controller.$name);
18629
18757
  }
18630
18758
  extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards
18631
18759
  });
@@ -22598,8 +22726,8 @@ is set to `true`. The parse error is stored in `ngModel.$error.parse`.
22598
22726
  * data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
22599
22727
  * collaborate together to achieve the desired result.
22600
22728
  *
22601
- * Note that `contenteditable` is an HTML5 attribute, which tells the browser to let the element
22602
- * contents be edited in place by the user. This will not work on older browsers.
22729
+ * `contenteditable` is an HTML5 attribute, which tells the browser to let the element
22730
+ * contents be edited in place by the user.
22603
22731
  *
22604
22732
  * We are using the {@link ng.service:$sce $sce} service here and include the {@link ngSanitize $sanitize}
22605
22733
  * module to automatically remove "bad" content like inline event listener (e.g. `<span onclick="...">`).
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.14
2
+ * @license AngularJS v1.3.15
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */