angular-gem 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- 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() {
|