angular-gem 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/angular-gem/version.rb +1 -1
- data/vendor/assets/javascripts/1.2.5/angular-animate.js +1323 -0
- data/vendor/assets/javascripts/1.2.5/angular-cookies.js +202 -0
- data/vendor/assets/javascripts/1.2.5/angular-loader.js +410 -0
- data/vendor/assets/javascripts/1.2.5/angular-mocks.js +2116 -0
- data/vendor/assets/javascripts/1.2.5/angular-resource.js +565 -0
- data/vendor/assets/javascripts/1.2.5/angular-route.js +911 -0
- data/vendor/assets/javascripts/1.2.5/angular-sanitize.js +622 -0
- data/vendor/assets/javascripts/1.2.5/angular-scenario.js +32374 -0
- data/vendor/assets/javascripts/1.2.5/angular-touch.js +563 -0
- data/vendor/assets/javascripts/1.2.5/angular.js +20369 -0
- data/vendor/assets/javascripts/angular-animate.js +2 -2
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-mocks.js +4 -3
- data/vendor/assets/javascripts/angular-resource.js +23 -4
- data/vendor/assets/javascripts/angular-route.js +52 -32
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +162 -104
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +162 -104
- metadata +11 -1
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.5
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -68,7 +68,7 @@ function minErr(module) {
|
|
68
68
|
return match;
|
69
69
|
});
|
70
70
|
|
71
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
71
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.5/' +
|
72
72
|
(module ? module + '/' : '') + code;
|
73
73
|
for (i = 2; i < arguments.length; i++) {
|
74
74
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -472,7 +472,7 @@ function valueFn(value) {return function() {return value;};}
|
|
472
472
|
* @param {*} value Reference to check.
|
473
473
|
* @returns {boolean} True if `value` is undefined.
|
474
474
|
*/
|
475
|
-
function isUndefined(value){return typeof value
|
475
|
+
function isUndefined(value){return typeof value === 'undefined';}
|
476
476
|
|
477
477
|
|
478
478
|
/**
|
@@ -486,7 +486,7 @@ function isUndefined(value){return typeof value == 'undefined';}
|
|
486
486
|
* @param {*} value Reference to check.
|
487
487
|
* @returns {boolean} True if `value` is defined.
|
488
488
|
*/
|
489
|
-
function isDefined(value){return typeof value
|
489
|
+
function isDefined(value){return typeof value !== 'undefined';}
|
490
490
|
|
491
491
|
|
492
492
|
/**
|
@@ -501,7 +501,7 @@ function isDefined(value){return typeof value != 'undefined';}
|
|
501
501
|
* @param {*} value Reference to check.
|
502
502
|
* @returns {boolean} True if `value` is an `Object` but not `null`.
|
503
503
|
*/
|
504
|
-
function isObject(value){return value != null && typeof value
|
504
|
+
function isObject(value){return value != null && typeof value === 'object';}
|
505
505
|
|
506
506
|
|
507
507
|
/**
|
@@ -515,7 +515,7 @@ function isObject(value){return value != null && typeof value == 'object';}
|
|
515
515
|
* @param {*} value Reference to check.
|
516
516
|
* @returns {boolean} True if `value` is a `String`.
|
517
517
|
*/
|
518
|
-
function isString(value){return typeof value
|
518
|
+
function isString(value){return typeof value === 'string';}
|
519
519
|
|
520
520
|
|
521
521
|
/**
|
@@ -529,7 +529,7 @@ function isString(value){return typeof value == 'string';}
|
|
529
529
|
* @param {*} value Reference to check.
|
530
530
|
* @returns {boolean} True if `value` is a `Number`.
|
531
531
|
*/
|
532
|
-
function isNumber(value){return typeof value
|
532
|
+
function isNumber(value){return typeof value === 'number';}
|
533
533
|
|
534
534
|
|
535
535
|
/**
|
@@ -544,7 +544,7 @@ function isNumber(value){return typeof value == 'number';}
|
|
544
544
|
* @returns {boolean} True if `value` is a `Date`.
|
545
545
|
*/
|
546
546
|
function isDate(value){
|
547
|
-
return toString.
|
547
|
+
return toString.call(value) === '[object Date]';
|
548
548
|
}
|
549
549
|
|
550
550
|
|
@@ -560,7 +560,7 @@ function isDate(value){
|
|
560
560
|
* @returns {boolean} True if `value` is an `Array`.
|
561
561
|
*/
|
562
562
|
function isArray(value) {
|
563
|
-
return toString.
|
563
|
+
return toString.call(value) === '[object Array]';
|
564
564
|
}
|
565
565
|
|
566
566
|
|
@@ -575,7 +575,7 @@ function isArray(value) {
|
|
575
575
|
* @param {*} value Reference to check.
|
576
576
|
* @returns {boolean} True if `value` is a `Function`.
|
577
577
|
*/
|
578
|
-
function isFunction(value){return typeof value
|
578
|
+
function isFunction(value){return typeof value === 'function';}
|
579
579
|
|
580
580
|
|
581
581
|
/**
|
@@ -586,7 +586,7 @@ function isFunction(value){return typeof value == 'function';}
|
|
586
586
|
* @returns {boolean} True if `value` is a `RegExp`.
|
587
587
|
*/
|
588
588
|
function isRegExp(value) {
|
589
|
-
return toString.
|
589
|
+
return toString.call(value) === '[object RegExp]';
|
590
590
|
}
|
591
591
|
|
592
592
|
|
@@ -608,12 +608,12 @@ function isScope(obj) {
|
|
608
608
|
|
609
609
|
|
610
610
|
function isFile(obj) {
|
611
|
-
return toString.
|
611
|
+
return toString.call(obj) === '[object File]';
|
612
612
|
}
|
613
613
|
|
614
614
|
|
615
615
|
function isBoolean(value) {
|
616
|
-
return typeof value
|
616
|
+
return typeof value === 'boolean';
|
617
617
|
}
|
618
618
|
|
619
619
|
|
@@ -717,7 +717,7 @@ function includes(array, obj) {
|
|
717
717
|
function indexOf(array, obj) {
|
718
718
|
if (array.indexOf) return array.indexOf(obj);
|
719
719
|
|
720
|
-
for (
|
720
|
+
for (var i = 0; i < array.length; i++) {
|
721
721
|
if (obj === array[i]) return i;
|
722
722
|
}
|
723
723
|
return -1;
|
@@ -1053,7 +1053,7 @@ function startingTag(element) {
|
|
1053
1053
|
try {
|
1054
1054
|
// turns out IE does not let you set .html() on elements which
|
1055
1055
|
// are not allowed to have children. So we just ignore it.
|
1056
|
-
element.
|
1056
|
+
element.empty();
|
1057
1057
|
} catch(e) {}
|
1058
1058
|
// As Per DOM Standards
|
1059
1059
|
var TEXT_NODE = 3;
|
@@ -1767,6 +1767,7 @@ function setupModuleLoader(window) {
|
|
1767
1767
|
ngHideDirective,
|
1768
1768
|
ngIfDirective,
|
1769
1769
|
ngIncludeDirective,
|
1770
|
+
ngIncludeFillContentDirective,
|
1770
1771
|
ngInitDirective,
|
1771
1772
|
ngNonBindableDirective,
|
1772
1773
|
ngPluralizeDirective,
|
@@ -1828,11 +1829,11 @@ function setupModuleLoader(window) {
|
|
1828
1829
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
1829
1830
|
*/
|
1830
1831
|
var version = {
|
1831
|
-
full: '1.2.
|
1832
|
+
full: '1.2.5', // all of these placeholder strings will be replaced by grunt's
|
1832
1833
|
major: 1, // package task
|
1833
1834
|
minor: 2,
|
1834
|
-
dot:
|
1835
|
-
codeName: '
|
1835
|
+
dot: 5,
|
1836
|
+
codeName: 'singularity-expansion'
|
1836
1837
|
};
|
1837
1838
|
|
1838
1839
|
|
@@ -1920,6 +1921,9 @@ function publishExternalAPI(angular){
|
|
1920
1921
|
ngRequired: requiredDirective,
|
1921
1922
|
ngValue: ngValueDirective
|
1922
1923
|
}).
|
1924
|
+
directive({
|
1925
|
+
ngInclude: ngIncludeFillContentDirective
|
1926
|
+
}).
|
1923
1927
|
directive(ngAttributeAliasDirectives).
|
1924
1928
|
directive(ngEventDirectives);
|
1925
1929
|
$provide.provider({
|
@@ -1997,6 +2001,7 @@ function publishExternalAPI(angular){
|
|
1997
2001
|
* - [`contents()`](http://api.jquery.com/contents/)
|
1998
2002
|
* - [`css()`](http://api.jquery.com/css/)
|
1999
2003
|
* - [`data()`](http://api.jquery.com/data/)
|
2004
|
+
* - [`empty()`](http://api.jquery.com/empty/)
|
2000
2005
|
* - [`eq()`](http://api.jquery.com/eq/)
|
2001
2006
|
* - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
|
2002
2007
|
* - [`hasClass()`](http://api.jquery.com/hasClass/)
|
@@ -2309,6 +2314,15 @@ function jqLiteInheritedData(element, name, value) {
|
|
2309
2314
|
}
|
2310
2315
|
}
|
2311
2316
|
|
2317
|
+
function jqLiteEmpty(element) {
|
2318
|
+
for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
|
2319
|
+
jqLiteDealoc(childNodes[i]);
|
2320
|
+
}
|
2321
|
+
while (element.firstChild) {
|
2322
|
+
element.removeChild(element.firstChild);
|
2323
|
+
}
|
2324
|
+
}
|
2325
|
+
|
2312
2326
|
//////////////////////////////////////////
|
2313
2327
|
// Functions which are declared directly.
|
2314
2328
|
//////////////////////////////////////////
|
@@ -2503,7 +2517,9 @@ forEach({
|
|
2503
2517
|
jqLiteDealoc(childNodes[i]);
|
2504
2518
|
}
|
2505
2519
|
element.innerHTML = value;
|
2506
|
-
}
|
2520
|
+
},
|
2521
|
+
|
2522
|
+
empty: jqLiteEmpty
|
2507
2523
|
}, function(fn, name){
|
2508
2524
|
/**
|
2509
2525
|
* Properties: writes return selection, reads return first value
|
@@ -2513,11 +2529,13 @@ forEach({
|
|
2513
2529
|
|
2514
2530
|
// jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
|
2515
2531
|
// in a way that survives minification.
|
2516
|
-
|
2532
|
+
// jqLiteEmpty takes no arguments but is a setter.
|
2533
|
+
if (fn !== jqLiteEmpty &&
|
2534
|
+
(((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
|
2517
2535
|
if (isObject(arg1)) {
|
2518
2536
|
|
2519
2537
|
// we are a write, but the object properties are the key/values
|
2520
|
-
for(i=0; i < this.length; i++) {
|
2538
|
+
for (i = 0; i < this.length; i++) {
|
2521
2539
|
if (fn === jqLiteData) {
|
2522
2540
|
// data() takes the whole object in jQuery
|
2523
2541
|
fn(this[i], arg1);
|
@@ -2542,7 +2560,7 @@ forEach({
|
|
2542
2560
|
}
|
2543
2561
|
} else {
|
2544
2562
|
// we are a write, so apply to all children
|
2545
|
-
for(i=0; i < this.length; i++) {
|
2563
|
+
for (i = 0; i < this.length; i++) {
|
2546
2564
|
fn(this[i], arg1, arg2);
|
2547
2565
|
}
|
2548
2566
|
// return self for chaining
|
@@ -2913,6 +2931,28 @@ HashMap.prototype = {
|
|
2913
2931
|
* $rootScope.$digest();
|
2914
2932
|
* });
|
2915
2933
|
* </pre>
|
2934
|
+
*
|
2935
|
+
* Sometimes you want to get access to the injector of a currently running Angular app
|
2936
|
+
* from outside Angular. Perhaps, you want to inject and compile some markup after the
|
2937
|
+
* application has been bootstrapped. You can do this using extra `injector()` added
|
2938
|
+
* to JQuery/jqLite elements. See {@link angular.element}.
|
2939
|
+
*
|
2940
|
+
* *This is fairly rare but could be the case if a third party library is injecting the
|
2941
|
+
* markup.*
|
2942
|
+
*
|
2943
|
+
* In the following example a new block of HTML containing a `ng-controller`
|
2944
|
+
* directive is added to the end of the document body by JQuery. We then compile and link
|
2945
|
+
* it into the current AngularJS scope.
|
2946
|
+
*
|
2947
|
+
* <pre>
|
2948
|
+
* var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
|
2949
|
+
* $(document.body).append($div);
|
2950
|
+
*
|
2951
|
+
* angular.element(document).injector().invoke(function($compile) {
|
2952
|
+
* var scope = angular.element($div).scope();
|
2953
|
+
* $compile($div)(scope);
|
2954
|
+
* });
|
2955
|
+
* </pre>
|
2916
2956
|
*/
|
2917
2957
|
|
2918
2958
|
|
@@ -3633,24 +3673,9 @@ function createInjector(modulesToLoad) {
|
|
3633
3673
|
fn = fn[length];
|
3634
3674
|
}
|
3635
3675
|
|
3636
|
-
|
3637
|
-
//
|
3638
|
-
|
3639
|
-
case 0: return fn();
|
3640
|
-
case 1: return fn(args[0]);
|
3641
|
-
case 2: return fn(args[0], args[1]);
|
3642
|
-
case 3: return fn(args[0], args[1], args[2]);
|
3643
|
-
case 4: return fn(args[0], args[1], args[2], args[3]);
|
3644
|
-
case 5: return fn(args[0], args[1], args[2], args[3], args[4]);
|
3645
|
-
case 6: return fn(args[0], args[1], args[2], args[3], args[4], args[5]);
|
3646
|
-
case 7: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
|
3647
|
-
case 8: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
|
3648
|
-
case 9: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7],
|
3649
|
-
args[8]);
|
3650
|
-
case 10: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7],
|
3651
|
-
args[8], args[9]);
|
3652
|
-
default: return fn.apply(self, args);
|
3653
|
-
}
|
3676
|
+
// http://jsperf.com/angularjs-invoke-apply-vs-switch
|
3677
|
+
// #5388
|
3678
|
+
return fn.apply(self, args);
|
3654
3679
|
}
|
3655
3680
|
|
3656
3681
|
function instantiate(Type, locals) {
|
@@ -5836,7 +5861,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
5836
5861
|
});
|
5837
5862
|
} else {
|
5838
5863
|
$template = jqLite(jqLiteClone(compileNode)).contents();
|
5839
|
-
$compileNode.
|
5864
|
+
$compileNode.empty(); // clear contents
|
5840
5865
|
childTranscludeFn = compile($template, transcludeFn);
|
5841
5866
|
}
|
5842
5867
|
}
|
@@ -6017,7 +6042,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6017
6042
|
optional = (match[2] == '?'),
|
6018
6043
|
mode = match[1], // @, =, or &
|
6019
6044
|
lastValue,
|
6020
|
-
parentGet, parentSet;
|
6045
|
+
parentGet, parentSet, compare;
|
6021
6046
|
|
6022
6047
|
isolateScope.$$isolateBindings[scopeName] = mode + attrName;
|
6023
6048
|
|
@@ -6040,6 +6065,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6040
6065
|
return;
|
6041
6066
|
}
|
6042
6067
|
parentGet = $parse(attrs[attrName]);
|
6068
|
+
if (parentGet.literal) {
|
6069
|
+
compare = equals;
|
6070
|
+
} else {
|
6071
|
+
compare = function(a,b) { return a === b; };
|
6072
|
+
}
|
6043
6073
|
parentSet = parentGet.assign || function() {
|
6044
6074
|
// reset the change, or we will throw this exception on every $digest
|
6045
6075
|
lastValue = isolateScope[scopeName] = parentGet(scope);
|
@@ -6050,10 +6080,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6050
6080
|
lastValue = isolateScope[scopeName] = parentGet(scope);
|
6051
6081
|
isolateScope.$watch(function parentValueWatch() {
|
6052
6082
|
var parentValue = parentGet(scope);
|
6053
|
-
|
6054
|
-
if (parentValue !== isolateScope[scopeName]) {
|
6083
|
+
if (!compare(parentValue, isolateScope[scopeName])) {
|
6055
6084
|
// we are out of sync and need to copy
|
6056
|
-
if (parentValue
|
6085
|
+
if (!compare(parentValue, lastValue)) {
|
6057
6086
|
// parent changed and it has precedence
|
6058
6087
|
isolateScope[scopeName] = parentValue;
|
6059
6088
|
} else {
|
@@ -6062,7 +6091,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6062
6091
|
}
|
6063
6092
|
}
|
6064
6093
|
return lastValue = parentValue;
|
6065
|
-
});
|
6094
|
+
}, null, parentGet.literal);
|
6066
6095
|
break;
|
6067
6096
|
|
6068
6097
|
case '&':
|
@@ -6264,7 +6293,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6264
6293
|
? origAsyncDirective.templateUrl($compileNode, tAttrs)
|
6265
6294
|
: origAsyncDirective.templateUrl;
|
6266
6295
|
|
6267
|
-
$compileNode.
|
6296
|
+
$compileNode.empty();
|
6268
6297
|
|
6269
6298
|
$http.get($sce.getTrustedResourceUrl(templateUrl), {cache: $templateCache}).
|
6270
6299
|
success(function(content) {
|
@@ -10579,7 +10608,7 @@ function $ParseProvider() {
|
|
10579
10608
|
*
|
10580
10609
|
* # Differences between Kris Kowal's Q and $q
|
10581
10610
|
*
|
10582
|
-
* There are
|
10611
|
+
* There are two main differences:
|
10583
10612
|
*
|
10584
10613
|
* - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
|
10585
10614
|
* mechanism in angular, which means faster propagation of resolution or rejection into your
|
@@ -11113,11 +11142,11 @@ function $RootScopeProvider(){
|
|
11113
11142
|
* @description
|
11114
11143
|
* Creates a new child {@link ng.$rootScope.Scope scope}.
|
11115
11144
|
*
|
11116
|
-
* The parent scope will propagate the {@link ng.$rootScope.Scope
|
11117
|
-
* {@link ng.$rootScope.Scope
|
11118
|
-
* scope hierarchy using {@link ng.$rootScope.Scope
|
11145
|
+
* The parent scope will propagate the {@link ng.$rootScope.Scope#methods_$digest $digest()} and
|
11146
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} events. The scope can be removed from the
|
11147
|
+
* scope hierarchy using {@link ng.$rootScope.Scope#methods_$destroy $destroy()}.
|
11119
11148
|
*
|
11120
|
-
* {@link ng.$rootScope.Scope
|
11149
|
+
* {@link ng.$rootScope.Scope#methods_$destroy $destroy()} must be called on a scope when it is
|
11121
11150
|
* desired for the scope and its child scopes to be permanently detached from the parent and
|
11122
11151
|
* thus stop participating in model change detection and listener notification by invoking.
|
11123
11152
|
*
|
@@ -11170,11 +11199,11 @@ function $RootScopeProvider(){
|
|
11170
11199
|
* @description
|
11171
11200
|
* Registers a `listener` callback to be executed whenever the `watchExpression` changes.
|
11172
11201
|
*
|
11173
|
-
* - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope
|
11202
|
+
* - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#methods_$digest
|
11174
11203
|
* $digest()} and should return the value that will be watched. (Since
|
11175
|
-
* {@link ng.$rootScope.Scope
|
11204
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} reruns when it detects changes the
|
11176
11205
|
* `watchExpression` can execute multiple times per
|
11177
|
-
* {@link ng.$rootScope.Scope
|
11206
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} and should be idempotent.)
|
11178
11207
|
* - The `listener` is called only when the value from the current `watchExpression` and the
|
11179
11208
|
* previous call to `watchExpression` are not equal (with the exception of the initial run,
|
11180
11209
|
* see below). The inequality is determined according to
|
@@ -11186,13 +11215,13 @@ function $RootScopeProvider(){
|
|
11186
11215
|
* iteration limit is 10 to prevent an infinite loop deadlock.
|
11187
11216
|
*
|
11188
11217
|
*
|
11189
|
-
* If you want to be notified whenever {@link ng.$rootScope.Scope
|
11218
|
+
* If you want to be notified whenever {@link ng.$rootScope.Scope#methods_$digest $digest} is called,
|
11190
11219
|
* you can register a `watchExpression` function with no `listener`. (Since `watchExpression`
|
11191
|
-
* can execute multiple times per {@link ng.$rootScope.Scope
|
11220
|
+
* can execute multiple times per {@link ng.$rootScope.Scope#methods_$digest $digest} cycle when a
|
11192
11221
|
* change is detected, be prepared for multiple calls to your listener.)
|
11193
11222
|
*
|
11194
11223
|
* After a watcher is registered with the scope, the `listener` fn is called asynchronously
|
11195
|
-
* (via {@link ng.$rootScope.Scope
|
11224
|
+
* (via {@link ng.$rootScope.Scope#methods_$evalAsync $evalAsync}) to initialize the
|
11196
11225
|
* watcher. In rare cases, this is undesirable because the listener is called when the result
|
11197
11226
|
* of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
|
11198
11227
|
* can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
|
@@ -11256,7 +11285,7 @@ function $RootScopeProvider(){
|
|
11256
11285
|
*
|
11257
11286
|
*
|
11258
11287
|
* @param {(function()|string)} watchExpression Expression that is evaluated on each
|
11259
|
-
* {@link ng.$rootScope.Scope
|
11288
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest} cycle. A change in the return value triggers
|
11260
11289
|
* a call to the `listener`.
|
11261
11290
|
*
|
11262
11291
|
* - `string`: Evaluated as {@link guide/expression expression}
|
@@ -11354,7 +11383,7 @@ function $RootScopeProvider(){
|
|
11354
11383
|
*
|
11355
11384
|
* @param {string|Function(scope)} obj Evaluated as {@link guide/expression expression}. The
|
11356
11385
|
* expression value should evaluate to an object or an array which is observed on each
|
11357
|
-
* {@link ng.$rootScope.Scope
|
11386
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest} cycle. Any shallow change within the
|
11358
11387
|
* collection will trigger a call to the `listener`.
|
11359
11388
|
*
|
11360
11389
|
* @param {function(newCollection, oldCollection, scope)} listener a callback function that is
|
@@ -11459,9 +11488,9 @@ function $RootScopeProvider(){
|
|
11459
11488
|
* @function
|
11460
11489
|
*
|
11461
11490
|
* @description
|
11462
|
-
* Processes all of the {@link ng.$rootScope.Scope
|
11463
|
-
* its children. Because a {@link ng.$rootScope.Scope
|
11464
|
-
* the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope
|
11491
|
+
* Processes all of the {@link ng.$rootScope.Scope#methods_$watch watchers} of the current scope and
|
11492
|
+
* its children. Because a {@link ng.$rootScope.Scope#methods_$watch watcher}'s listener can change
|
11493
|
+
* the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#methods_$watch watchers}
|
11465
11494
|
* until no more listeners are firing. This means that it is possible to get into an infinite
|
11466
11495
|
* loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
|
11467
11496
|
* iterations exceeds 10.
|
@@ -11469,12 +11498,12 @@ function $RootScopeProvider(){
|
|
11469
11498
|
* Usually, you don't call `$digest()` directly in
|
11470
11499
|
* {@link ng.directive:ngController controllers} or in
|
11471
11500
|
* {@link ng.$compileProvider#methods_directive directives}.
|
11472
|
-
* Instead, you should call {@link ng.$rootScope.Scope
|
11501
|
+
* Instead, you should call {@link ng.$rootScope.Scope#methods_$apply $apply()} (typically from within
|
11473
11502
|
* a {@link ng.$compileProvider#methods_directive directives}), which will force a `$digest()`.
|
11474
11503
|
*
|
11475
11504
|
* If you want to be notified whenever `$digest()` is called,
|
11476
11505
|
* you can register a `watchExpression` function with
|
11477
|
-
* {@link ng.$rootScope.Scope
|
11506
|
+
* {@link ng.$rootScope.Scope#methods_$watch $watch()} with no `listener`.
|
11478
11507
|
*
|
11479
11508
|
* In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
|
11480
11509
|
*
|
@@ -11629,7 +11658,7 @@ function $RootScopeProvider(){
|
|
11629
11658
|
*
|
11630
11659
|
* @description
|
11631
11660
|
* Removes the current scope (and all of its children) from the parent scope. Removal implies
|
11632
|
-
* that calls to {@link ng.$rootScope.Scope
|
11661
|
+
* that calls to {@link ng.$rootScope.Scope#methods_$digest $digest()} will no longer
|
11633
11662
|
* propagate to the current scope and its children. Removal also implies that the current
|
11634
11663
|
* scope is eligible for garbage collection.
|
11635
11664
|
*
|
@@ -11711,7 +11740,7 @@ function $RootScopeProvider(){
|
|
11711
11740
|
*
|
11712
11741
|
* - it will execute after the function that scheduled the evaluation (preferably before DOM
|
11713
11742
|
* rendering).
|
11714
|
-
* - at least one {@link ng.$rootScope.Scope
|
11743
|
+
* - at least one {@link ng.$rootScope.Scope#methods_$digest $digest cycle} will be performed after
|
11715
11744
|
* `expression` execution.
|
11716
11745
|
*
|
11717
11746
|
* Any exceptions from the execution of the expression are forwarded to the
|
@@ -11756,7 +11785,7 @@ function $RootScopeProvider(){
|
|
11756
11785
|
* framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
|
11757
11786
|
* Because we are calling into the angular framework we need to perform proper scope life
|
11758
11787
|
* cycle of {@link ng.$exceptionHandler exception handling},
|
11759
|
-
* {@link ng.$rootScope.Scope
|
11788
|
+
* {@link ng.$rootScope.Scope#methods_$digest executing watches}.
|
11760
11789
|
*
|
11761
11790
|
* ## Life cycle
|
11762
11791
|
*
|
@@ -11777,11 +11806,11 @@ function $RootScopeProvider(){
|
|
11777
11806
|
* Scope's `$apply()` method transitions through the following stages:
|
11778
11807
|
*
|
11779
11808
|
* 1. The {@link guide/expression expression} is executed using the
|
11780
|
-
* {@link ng.$rootScope.Scope
|
11809
|
+
* {@link ng.$rootScope.Scope#methods_$eval $eval()} method.
|
11781
11810
|
* 2. Any exceptions from the execution of the expression are forwarded to the
|
11782
11811
|
* {@link ng.$exceptionHandler $exceptionHandler} service.
|
11783
|
-
* 3. The {@link ng.$rootScope.Scope
|
11784
|
-
* expression was executed using the {@link ng.$rootScope.Scope
|
11812
|
+
* 3. The {@link ng.$rootScope.Scope#methods_$watch watch} listeners are fired immediately after the
|
11813
|
+
* expression was executed using the {@link ng.$rootScope.Scope#methods_$digest $digest()} method.
|
11785
11814
|
*
|
11786
11815
|
*
|
11787
11816
|
* @param {(string|function())=} exp An angular expression to be executed.
|
@@ -11815,7 +11844,7 @@ function $RootScopeProvider(){
|
|
11815
11844
|
* @function
|
11816
11845
|
*
|
11817
11846
|
* @description
|
11818
|
-
* Listens on events of a given type. See {@link ng.$rootScope.Scope
|
11847
|
+
* Listens on events of a given type. See {@link ng.$rootScope.Scope#methods_$emit $emit} for
|
11819
11848
|
* discussion of event life cycle.
|
11820
11849
|
*
|
11821
11850
|
* The event listener function format is: `function(event, args...)`. The `event` object
|
@@ -11856,20 +11885,20 @@ function $RootScopeProvider(){
|
|
11856
11885
|
*
|
11857
11886
|
* @description
|
11858
11887
|
* Dispatches an event `name` upwards through the scope hierarchy notifying the
|
11859
|
-
* registered {@link ng.$rootScope.Scope
|
11888
|
+
* registered {@link ng.$rootScope.Scope#methods_$on} listeners.
|
11860
11889
|
*
|
11861
11890
|
* The event life cycle starts at the scope on which `$emit` was called. All
|
11862
|
-
* {@link ng.$rootScope.Scope
|
11891
|
+
* {@link ng.$rootScope.Scope#methods_$on listeners} listening for `name` event on this scope get
|
11863
11892
|
* notified. Afterwards, the event traverses upwards toward the root scope and calls all
|
11864
11893
|
* registered listeners along the way. The event will stop propagating if one of the listeners
|
11865
11894
|
* cancels it.
|
11866
11895
|
*
|
11867
|
-
* Any exception emitted from the {@link ng.$rootScope.Scope
|
11896
|
+
* Any exception emitted from the {@link ng.$rootScope.Scope#methods_$on listeners} will be passed
|
11868
11897
|
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
|
11869
11898
|
*
|
11870
11899
|
* @param {string} name Event name to emit.
|
11871
11900
|
* @param {...*} args Optional set of arguments which will be passed onto the event listeners.
|
11872
|
-
* @return {Object} Event object (see {@link ng.$rootScope.Scope
|
11901
|
+
* @return {Object} Event object (see {@link ng.$rootScope.Scope#methods_$on}).
|
11873
11902
|
*/
|
11874
11903
|
$emit: function(name, args) {
|
11875
11904
|
var empty = [],
|
@@ -11925,19 +11954,19 @@ function $RootScopeProvider(){
|
|
11925
11954
|
*
|
11926
11955
|
* @description
|
11927
11956
|
* Dispatches an event `name` downwards to all child scopes (and their children) notifying the
|
11928
|
-
* registered {@link ng.$rootScope.Scope
|
11957
|
+
* registered {@link ng.$rootScope.Scope#methods_$on} listeners.
|
11929
11958
|
*
|
11930
11959
|
* The event life cycle starts at the scope on which `$broadcast` was called. All
|
11931
|
-
* {@link ng.$rootScope.Scope
|
11960
|
+
* {@link ng.$rootScope.Scope#methods_$on listeners} listening for `name` event on this scope get
|
11932
11961
|
* notified. Afterwards, the event propagates to all direct and indirect scopes of the current
|
11933
11962
|
* scope and calls all registered listeners along the way. The event cannot be canceled.
|
11934
11963
|
*
|
11935
|
-
* Any exception emitted from the {@link ng.$rootScope.Scope
|
11964
|
+
* Any exception emitted from the {@link ng.$rootScope.Scope#methods_$on listeners} will be passed
|
11936
11965
|
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
|
11937
11966
|
*
|
11938
11967
|
* @param {string} name Event name to broadcast.
|
11939
11968
|
* @param {...*} args Optional set of arguments which will be passed onto the event listeners.
|
11940
|
-
* @return {Object} Event object, see {@link ng.$rootScope.Scope
|
11969
|
+
* @return {Object} Event object, see {@link ng.$rootScope.Scope#methods_$on}
|
11941
11970
|
*/
|
11942
11971
|
$broadcast: function(name, args) {
|
11943
11972
|
var target = this,
|
@@ -14674,14 +14703,16 @@ var htmlAnchorDirective = valueFn({
|
|
14674
14703
|
element.append(document.createComment('IE fix'));
|
14675
14704
|
}
|
14676
14705
|
|
14677
|
-
|
14678
|
-
|
14679
|
-
|
14680
|
-
|
14681
|
-
|
14682
|
-
|
14683
|
-
|
14684
|
-
|
14706
|
+
if (!attr.href && !attr.name) {
|
14707
|
+
return function(scope, element) {
|
14708
|
+
element.on('click', function(event){
|
14709
|
+
// if we have no href url, then don't navigate anywhere.
|
14710
|
+
if (!element.attr('href')) {
|
14711
|
+
event.preventDefault();
|
14712
|
+
}
|
14713
|
+
});
|
14714
|
+
};
|
14715
|
+
}
|
14685
14716
|
}
|
14686
14717
|
});
|
14687
14718
|
|
@@ -16862,7 +16893,6 @@ var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
|
|
16862
16893
|
id="{{name}}"
|
16863
16894
|
name="favorite">
|
16864
16895
|
</label>
|
16865
|
-
</span>
|
16866
16896
|
<div>You chose {{my.favorite}}</div>
|
16867
16897
|
</form>
|
16868
16898
|
</doc:source>
|
@@ -18253,13 +18283,14 @@ var ngIfDirective = ['$animate', function($animate) {
|
|
18253
18283
|
* @description
|
18254
18284
|
* Emitted every time the ngInclude content is reloaded.
|
18255
18285
|
*/
|
18256
|
-
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$
|
18257
|
-
function($http, $templateCache, $anchorScroll, $
|
18286
|
+
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$animate', '$sce',
|
18287
|
+
function($http, $templateCache, $anchorScroll, $animate, $sce) {
|
18258
18288
|
return {
|
18259
18289
|
restrict: 'ECA',
|
18260
18290
|
priority: 400,
|
18261
18291
|
terminal: true,
|
18262
18292
|
transclude: 'element',
|
18293
|
+
controller: angular.noop,
|
18263
18294
|
compile: function(element, attr) {
|
18264
18295
|
var srcExp = attr.ngInclude || attr.src,
|
18265
18296
|
onloadExp = attr.onload || '',
|
@@ -18293,6 +18324,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
18293
18324
|
$http.get(src, {cache: $templateCache}).success(function(response) {
|
18294
18325
|
if (thisChangeId !== changeCounter) return;
|
18295
18326
|
var newScope = scope.$new();
|
18327
|
+
ctrl.template = response;
|
18296
18328
|
|
18297
18329
|
// Note: This will also link all children of ng-include that were contained in the original
|
18298
18330
|
// html. If that content contains controllers, ... they could pollute/change the scope.
|
@@ -18300,15 +18332,14 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
18300
18332
|
// Note: We can't remove them in the cloneAttchFn of $transclude as that
|
18301
18333
|
// function is called before linking the content, which would apply child
|
18302
18334
|
// directives to non existing elements.
|
18303
|
-
var clone = $transclude(newScope,
|
18304
|
-
|
18335
|
+
var clone = $transclude(newScope, function(clone) {
|
18336
|
+
cleanupLastIncludeContent();
|
18337
|
+
$animate.enter(clone, null, $element, afterAnimation);
|
18338
|
+
});
|
18305
18339
|
|
18306
18340
|
currentScope = newScope;
|
18307
18341
|
currentElement = clone;
|
18308
18342
|
|
18309
|
-
currentElement.html(response);
|
18310
|
-
$animate.enter(currentElement, null, $element, afterAnimation);
|
18311
|
-
$compile(currentElement.contents())(currentScope);
|
18312
18343
|
currentScope.$emit('$includeContentLoaded');
|
18313
18344
|
scope.$eval(onloadExp);
|
18314
18345
|
}).error(function() {
|
@@ -18317,6 +18348,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
18317
18348
|
scope.$emit('$includeContentRequested');
|
18318
18349
|
} else {
|
18319
18350
|
cleanupLastIncludeContent();
|
18351
|
+
ctrl.template = null;
|
18320
18352
|
}
|
18321
18353
|
});
|
18322
18354
|
};
|
@@ -18324,6 +18356,24 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
18324
18356
|
};
|
18325
18357
|
}];
|
18326
18358
|
|
18359
|
+
// This directive is called during the $transclude call of the first `ngInclude` directive.
|
18360
|
+
// It will replace and compile the content of the element with the loaded template.
|
18361
|
+
// We need this directive so that the element content is already filled when
|
18362
|
+
// the link function of another directive on the same element as ngInclude
|
18363
|
+
// is called.
|
18364
|
+
var ngIncludeFillContentDirective = ['$compile',
|
18365
|
+
function($compile) {
|
18366
|
+
return {
|
18367
|
+
restrict: 'ECA',
|
18368
|
+
priority: -400,
|
18369
|
+
require: 'ngInclude',
|
18370
|
+
link: function(scope, $element, $attr, ctrl) {
|
18371
|
+
$element.html(ctrl.template);
|
18372
|
+
$compile($element.contents())(scope);
|
18373
|
+
}
|
18374
|
+
};
|
18375
|
+
}];
|
18376
|
+
|
18327
18377
|
/**
|
18328
18378
|
* @ngdoc directive
|
18329
18379
|
* @name ng.directive:ngInit
|
@@ -19370,19 +19420,26 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) {
|
|
19370
19420
|
* @restrict EA
|
19371
19421
|
*
|
19372
19422
|
* @description
|
19373
|
-
* The ngSwitch directive is used to conditionally swap DOM structure on your template based on a scope expression.
|
19374
|
-
* Elements within ngSwitch but without ngSwitchWhen or ngSwitchDefault directives will be preserved at the location
|
19423
|
+
* The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
|
19424
|
+
* Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
|
19375
19425
|
* as specified in the template.
|
19376
19426
|
*
|
19377
19427
|
* The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
|
19378
|
-
* from the template cache), ngSwitch simply choses one of the nested elements and makes it visible based on which element
|
19428
|
+
* from the template cache), `ngSwitch` simply choses one of the nested elements and makes it visible based on which element
|
19379
19429
|
* matches the value obtained from the evaluated expression. In other words, you define a container element
|
19380
|
-
* (where you place the directive), place an expression on the
|
19381
|
-
* (or the
|
19430
|
+
* (where you place the directive), place an expression on the **`on="..."` attribute**
|
19431
|
+
* (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
|
19382
19432
|
* a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
|
19383
19433
|
* expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
|
19384
19434
|
* attribute is displayed.
|
19385
19435
|
*
|
19436
|
+
* <div class="alert alert-info">
|
19437
|
+
* Be aware that the attribute values to match against cannot be expressions. They are interpreted
|
19438
|
+
* as literal string values to match against.
|
19439
|
+
* For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
|
19440
|
+
* value of the expression `$scope.someVal`.
|
19441
|
+
* </div>
|
19442
|
+
|
19386
19443
|
* @animations
|
19387
19444
|
* enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
|
19388
19445
|
* leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
|
@@ -19394,6 +19451,7 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) {
|
|
19394
19451
|
* <ANY ng-switch-default>...</ANY>
|
19395
19452
|
* </ANY>
|
19396
19453
|
*
|
19454
|
+
*
|
19397
19455
|
* @scope
|
19398
19456
|
* @priority 800
|
19399
19457
|
* @param {*} ngSwitch|on expression to match against <tt>ng-switch-when</tt>.
|
@@ -19611,7 +19669,7 @@ var ngTranscludeDirective = ngDirective({
|
|
19611
19669
|
|
19612
19670
|
link: function($scope, $element, $attrs, controller) {
|
19613
19671
|
controller.$transclude(function(clone) {
|
19614
|
-
$element.
|
19672
|
+
$element.empty();
|
19615
19673
|
$element.append(clone);
|
19616
19674
|
});
|
19617
19675
|
}
|
@@ -19995,13 +20053,13 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
19995
20053
|
// becomes the compilation root
|
19996
20054
|
nullOption.removeClass('ng-scope');
|
19997
20055
|
|
19998
|
-
// we need to remove it before calling selectElement.
|
20056
|
+
// we need to remove it before calling selectElement.empty() because otherwise IE will
|
19999
20057
|
// remove the label from the element. wtf?
|
20000
20058
|
nullOption.remove();
|
20001
20059
|
}
|
20002
20060
|
|
20003
20061
|
// clear contents, we'll add what's needed based on the model
|
20004
|
-
selectElement.
|
20062
|
+
selectElement.empty();
|
20005
20063
|
|
20006
20064
|
selectElement.on('change', function() {
|
20007
20065
|
scope.$apply(function() {
|