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
|
*/
|
@@ -1243,7 +1243,7 @@ angular.module('ngAnimate', ['ng'])
|
|
1243
1243
|
//make the element super hidden and override any CSS style values
|
1244
1244
|
clone.attr('style','position:absolute; top:-9999px; left:-9999px');
|
1245
1245
|
clone.removeAttr('id');
|
1246
|
-
clone.
|
1246
|
+
clone.empty();
|
1247
1247
|
|
1248
1248
|
forEach(oldClasses.split(' '), function(klass) {
|
1249
1249
|
clone.removeClass(klass);
|
@@ -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
|
*/
|
@@ -69,7 +69,7 @@ function minErr(module) {
|
|
69
69
|
return match;
|
70
70
|
});
|
71
71
|
|
72
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
72
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.5/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -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
|
*/
|
@@ -1094,7 +1094,8 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1094
1094
|
var definitions = [],
|
1095
1095
|
expectations = [],
|
1096
1096
|
responses = [],
|
1097
|
-
responsesPush = angular.bind(responses, responses.push)
|
1097
|
+
responsesPush = angular.bind(responses, responses.push),
|
1098
|
+
copy = angular.copy;
|
1098
1099
|
|
1099
1100
|
function createResponse(status, data, headers) {
|
1100
1101
|
if (angular.isFunction(status)) return status;
|
@@ -1126,7 +1127,7 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1126
1127
|
function handleResponse() {
|
1127
1128
|
var response = wrapped.response(method, url, data, headers);
|
1128
1129
|
xhr.$$respHeaders = response[2];
|
1129
|
-
callback(response[0], response[1], xhr.getAllResponseHeaders());
|
1130
|
+
callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders());
|
1130
1131
|
}
|
1131
1132
|
|
1132
1133
|
function handleTimeout() {
|
@@ -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
|
*/
|
@@ -29,6 +29,25 @@ function lookupDottedPath(obj, path) {
|
|
29
29
|
return obj;
|
30
30
|
}
|
31
31
|
|
32
|
+
/**
|
33
|
+
* Create a shallow copy of an object and clear other fields from the destination
|
34
|
+
*/
|
35
|
+
function shallowClearAndCopy(src, dst) {
|
36
|
+
dst = dst || {};
|
37
|
+
|
38
|
+
angular.forEach(dst, function(value, key){
|
39
|
+
delete dst[key];
|
40
|
+
});
|
41
|
+
|
42
|
+
for (var key in src) {
|
43
|
+
if (src.hasOwnProperty(key) && key.substr(0, 2) !== '$$') {
|
44
|
+
dst[key] = src[key];
|
45
|
+
}
|
46
|
+
}
|
47
|
+
|
48
|
+
return dst;
|
49
|
+
}
|
50
|
+
|
32
51
|
/**
|
33
52
|
* @ngdoc overview
|
34
53
|
* @name ngResource
|
@@ -398,7 +417,7 @@ angular.module('ngResource', ['ng']).
|
|
398
417
|
}
|
399
418
|
|
400
419
|
function Resource(value){
|
401
|
-
|
420
|
+
shallowClearAndCopy(value || {}, this);
|
402
421
|
}
|
403
422
|
|
404
423
|
forEach(actions, function(action, name) {
|
@@ -470,7 +489,7 @@ angular.module('ngResource', ['ng']).
|
|
470
489
|
if (data) {
|
471
490
|
// Need to convert action.isArray to boolean in case it is undefined
|
472
491
|
// jshint -W018
|
473
|
-
if (
|
492
|
+
if (angular.isArray(data) !== (!!action.isArray)) {
|
474
493
|
throw $resourceMinErr('badcfg', 'Error in resource configuration. Expected ' +
|
475
494
|
'response to contain an {0} but got an {1}',
|
476
495
|
action.isArray?'array':'object', angular.isArray(data)?'array':'object');
|
@@ -482,7 +501,7 @@ angular.module('ngResource', ['ng']).
|
|
482
501
|
value.push(new Resource(item));
|
483
502
|
});
|
484
503
|
} else {
|
485
|
-
|
504
|
+
shallowClearAndCopy(data, value);
|
486
505
|
value.$promise = promise;
|
487
506
|
}
|
488
507
|
}
|
@@ -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
|
*/
|
@@ -57,13 +57,13 @@ function $RouteProvider(){
|
|
57
57
|
* `$location.path` will be updated to add or drop the trailing slash to exactly match the
|
58
58
|
* route definition.
|
59
59
|
*
|
60
|
-
* * `path` can contain named groups starting with a colon
|
60
|
+
* * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up
|
61
61
|
* to the next slash are matched and stored in `$routeParams` under the given `name`
|
62
62
|
* when the route matches.
|
63
|
-
* * `path` can contain named groups starting with a colon and ending with a star
|
64
|
-
* All characters are eagerly stored in `$routeParams` under the given `name`
|
63
|
+
* * `path` can contain named groups starting with a colon and ending with a star:
|
64
|
+
* e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`
|
65
65
|
* when the route matches.
|
66
|
-
* * `path` can contain optional named groups with a question mark
|
66
|
+
* * `path` can contain optional named groups with a question mark: e.g.`:name?`.
|
67
67
|
*
|
68
68
|
* For example, routes like `/color/:color/largecode/:largecode*\/edit` will match
|
69
69
|
* `/color/brown/largecode/code/with/slashs/edit` and extract:
|
@@ -644,6 +644,8 @@ function $RouteParamsProvider() {
|
|
644
644
|
}
|
645
645
|
|
646
646
|
ngRouteModule.directive('ngView', ngViewFactory);
|
647
|
+
ngRouteModule.directive('ngView', ngViewFillContentFactory);
|
648
|
+
|
647
649
|
|
648
650
|
/**
|
649
651
|
* @ngdoc directive
|
@@ -809,8 +811,8 @@ ngRouteModule.directive('ngView', ngViewFactory);
|
|
809
811
|
* @description
|
810
812
|
* Emitted every time the ngView content is reloaded.
|
811
813
|
*/
|
812
|
-
ngViewFactory.$inject = ['$route', '$anchorScroll', '$
|
813
|
-
function ngViewFactory( $route, $anchorScroll, $
|
814
|
+
ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];
|
815
|
+
function ngViewFactory( $route, $anchorScroll, $animate) {
|
814
816
|
return {
|
815
817
|
restrict: 'ECA',
|
816
818
|
terminal: true,
|
@@ -842,6 +844,7 @@ function ngViewFactory( $route, $anchorScroll, $compile, $controller,
|
|
842
844
|
|
843
845
|
if (template) {
|
844
846
|
var newScope = scope.$new();
|
847
|
+
var current = $route.current;
|
845
848
|
|
846
849
|
// Note: This will also link all children of ng-view that were contained in the original
|
847
850
|
// html. If that content contains controllers, ... they could pollute/change the scope.
|
@@ -849,34 +852,18 @@ function ngViewFactory( $route, $anchorScroll, $compile, $controller,
|
|
849
852
|
// Note: We can't remove them in the cloneAttchFn of $transclude as that
|
850
853
|
// function is called before linking the content, which would apply child
|
851
854
|
// directives to non existing elements.
|
852
|
-
var clone = $transclude(newScope,
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
}
|
855
|
+
var clone = $transclude(newScope, function(clone) {
|
856
|
+
$animate.enter(clone, null, currentElement || $element, function onNgViewEnter () {
|
857
|
+
if (angular.isDefined(autoScrollExp)
|
858
|
+
&& (!autoScrollExp || scope.$eval(autoScrollExp))) {
|
859
|
+
$anchorScroll();
|
860
|
+
}
|
861
|
+
});
|
862
|
+
cleanupLastView();
|
859
863
|
});
|
860
864
|
|
861
|
-
cleanupLastView();
|
862
|
-
|
863
|
-
var link = $compile(clone.contents()),
|
864
|
-
current = $route.current;
|
865
|
-
|
866
|
-
currentScope = current.scope = newScope;
|
867
865
|
currentElement = clone;
|
868
|
-
|
869
|
-
if (current.controller) {
|
870
|
-
locals.$scope = currentScope;
|
871
|
-
var controller = $controller(current.controller, locals);
|
872
|
-
if (current.controllerAs) {
|
873
|
-
currentScope[current.controllerAs] = controller;
|
874
|
-
}
|
875
|
-
clone.data('$ngControllerController', controller);
|
876
|
-
clone.children().data('$ngControllerController', controller);
|
877
|
-
}
|
878
|
-
|
879
|
-
link(currentScope);
|
866
|
+
currentScope = current.scope = newScope;
|
880
867
|
currentScope.$emit('$viewContentLoaded');
|
881
868
|
currentScope.$eval(onloadExp);
|
882
869
|
} else {
|
@@ -887,5 +874,38 @@ function ngViewFactory( $route, $anchorScroll, $compile, $controller,
|
|
887
874
|
};
|
888
875
|
}
|
889
876
|
|
877
|
+
// This directive is called during the $transclude call of the first `ngView` directive.
|
878
|
+
// It will replace and compile the content of the element with the loaded template.
|
879
|
+
// We need this directive so that the element content is already filled when
|
880
|
+
// the link function of another directive on the same element as ngView
|
881
|
+
// is called.
|
882
|
+
ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];
|
883
|
+
function ngViewFillContentFactory($compile, $controller, $route) {
|
884
|
+
return {
|
885
|
+
restrict: 'ECA',
|
886
|
+
priority: -400,
|
887
|
+
link: function(scope, $element) {
|
888
|
+
var current = $route.current,
|
889
|
+
locals = current.locals;
|
890
|
+
|
891
|
+
$element.html(locals.$template);
|
892
|
+
|
893
|
+
var link = $compile($element.contents());
|
894
|
+
|
895
|
+
if (current.controller) {
|
896
|
+
locals.$scope = scope;
|
897
|
+
var controller = $controller(current.controller, locals);
|
898
|
+
if (current.controllerAs) {
|
899
|
+
scope[current.controllerAs] = controller;
|
900
|
+
}
|
901
|
+
$element.data('$ngControllerController', controller);
|
902
|
+
$element.children().data('$ngControllerController', controller);
|
903
|
+
}
|
904
|
+
|
905
|
+
link(scope);
|
906
|
+
}
|
907
|
+
};
|
908
|
+
}
|
909
|
+
|
890
910
|
|
891
911
|
})(window, window.angular);
|
@@ -9790,7 +9790,7 @@ if ( typeof module === "object" && module && typeof module.exports === "object"
|
|
9790
9790
|
})( window );
|
9791
9791
|
|
9792
9792
|
/**
|
9793
|
-
* @license AngularJS v1.2.
|
9793
|
+
* @license AngularJS v1.2.5
|
9794
9794
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9795
9795
|
* License: MIT
|
9796
9796
|
*/
|
@@ -9860,7 +9860,7 @@ function minErr(module) {
|
|
9860
9860
|
return match;
|
9861
9861
|
});
|
9862
9862
|
|
9863
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
9863
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.5/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -10264,7 +10264,7 @@ function valueFn(value) {return function() {return value;};}
|
|
10264
10264
|
* @param {*} value Reference to check.
|
10265
10265
|
* @returns {boolean} True if `value` is undefined.
|
10266
10266
|
*/
|
10267
|
-
function isUndefined(value){return typeof value
|
10267
|
+
function isUndefined(value){return typeof value === 'undefined';}
|
10268
10268
|
|
10269
10269
|
|
10270
10270
|
/**
|
@@ -10278,7 +10278,7 @@ function isUndefined(value){return typeof value == 'undefined';}
|
|
10278
10278
|
* @param {*} value Reference to check.
|
10279
10279
|
* @returns {boolean} True if `value` is defined.
|
10280
10280
|
*/
|
10281
|
-
function isDefined(value){return typeof value
|
10281
|
+
function isDefined(value){return typeof value !== 'undefined';}
|
10282
10282
|
|
10283
10283
|
|
10284
10284
|
/**
|
@@ -10293,7 +10293,7 @@ function isDefined(value){return typeof value != 'undefined';}
|
|
10293
10293
|
* @param {*} value Reference to check.
|
10294
10294
|
* @returns {boolean} True if `value` is an `Object` but not `null`.
|
10295
10295
|
*/
|
10296
|
-
function isObject(value){return value != null && typeof value
|
10296
|
+
function isObject(value){return value != null && typeof value === 'object';}
|
10297
10297
|
|
10298
10298
|
|
10299
10299
|
/**
|
@@ -10307,7 +10307,7 @@ function isObject(value){return value != null && typeof value == 'object';}
|
|
10307
10307
|
* @param {*} value Reference to check.
|
10308
10308
|
* @returns {boolean} True if `value` is a `String`.
|
10309
10309
|
*/
|
10310
|
-
function isString(value){return typeof value
|
10310
|
+
function isString(value){return typeof value === 'string';}
|
10311
10311
|
|
10312
10312
|
|
10313
10313
|
/**
|
@@ -10321,7 +10321,7 @@ function isString(value){return typeof value == 'string';}
|
|
10321
10321
|
* @param {*} value Reference to check.
|
10322
10322
|
* @returns {boolean} True if `value` is a `Number`.
|
10323
10323
|
*/
|
10324
|
-
function isNumber(value){return typeof value
|
10324
|
+
function isNumber(value){return typeof value === 'number';}
|
10325
10325
|
|
10326
10326
|
|
10327
10327
|
/**
|
@@ -10336,7 +10336,7 @@ function isNumber(value){return typeof value == 'number';}
|
|
10336
10336
|
* @returns {boolean} True if `value` is a `Date`.
|
10337
10337
|
*/
|
10338
10338
|
function isDate(value){
|
10339
|
-
return toString.
|
10339
|
+
return toString.call(value) === '[object Date]';
|
10340
10340
|
}
|
10341
10341
|
|
10342
10342
|
|
@@ -10352,7 +10352,7 @@ function isDate(value){
|
|
10352
10352
|
* @returns {boolean} True if `value` is an `Array`.
|
10353
10353
|
*/
|
10354
10354
|
function isArray(value) {
|
10355
|
-
return toString.
|
10355
|
+
return toString.call(value) === '[object Array]';
|
10356
10356
|
}
|
10357
10357
|
|
10358
10358
|
|
@@ -10367,7 +10367,7 @@ function isArray(value) {
|
|
10367
10367
|
* @param {*} value Reference to check.
|
10368
10368
|
* @returns {boolean} True if `value` is a `Function`.
|
10369
10369
|
*/
|
10370
|
-
function isFunction(value){return typeof value
|
10370
|
+
function isFunction(value){return typeof value === 'function';}
|
10371
10371
|
|
10372
10372
|
|
10373
10373
|
/**
|
@@ -10378,7 +10378,7 @@ function isFunction(value){return typeof value == 'function';}
|
|
10378
10378
|
* @returns {boolean} True if `value` is a `RegExp`.
|
10379
10379
|
*/
|
10380
10380
|
function isRegExp(value) {
|
10381
|
-
return toString.
|
10381
|
+
return toString.call(value) === '[object RegExp]';
|
10382
10382
|
}
|
10383
10383
|
|
10384
10384
|
|
@@ -10400,12 +10400,12 @@ function isScope(obj) {
|
|
10400
10400
|
|
10401
10401
|
|
10402
10402
|
function isFile(obj) {
|
10403
|
-
return toString.
|
10403
|
+
return toString.call(obj) === '[object File]';
|
10404
10404
|
}
|
10405
10405
|
|
10406
10406
|
|
10407
10407
|
function isBoolean(value) {
|
10408
|
-
return typeof value
|
10408
|
+
return typeof value === 'boolean';
|
10409
10409
|
}
|
10410
10410
|
|
10411
10411
|
|
@@ -10509,7 +10509,7 @@ function includes(array, obj) {
|
|
10509
10509
|
function indexOf(array, obj) {
|
10510
10510
|
if (array.indexOf) return array.indexOf(obj);
|
10511
10511
|
|
10512
|
-
for (
|
10512
|
+
for (var i = 0; i < array.length; i++) {
|
10513
10513
|
if (obj === array[i]) return i;
|
10514
10514
|
}
|
10515
10515
|
return -1;
|
@@ -10845,7 +10845,7 @@ function startingTag(element) {
|
|
10845
10845
|
try {
|
10846
10846
|
// turns out IE does not let you set .html() on elements which
|
10847
10847
|
// are not allowed to have children. So we just ignore it.
|
10848
|
-
element.
|
10848
|
+
element.empty();
|
10849
10849
|
} catch(e) {}
|
10850
10850
|
// As Per DOM Standards
|
10851
10851
|
var TEXT_NODE = 3;
|
@@ -11559,6 +11559,7 @@ function setupModuleLoader(window) {
|
|
11559
11559
|
ngHideDirective,
|
11560
11560
|
ngIfDirective,
|
11561
11561
|
ngIncludeDirective,
|
11562
|
+
ngIncludeFillContentDirective,
|
11562
11563
|
ngInitDirective,
|
11563
11564
|
ngNonBindableDirective,
|
11564
11565
|
ngPluralizeDirective,
|
@@ -11620,11 +11621,11 @@ function setupModuleLoader(window) {
|
|
11620
11621
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11621
11622
|
*/
|
11622
11623
|
var version = {
|
11623
|
-
full: '1.2.
|
11624
|
+
full: '1.2.5', // all of these placeholder strings will be replaced by grunt's
|
11624
11625
|
major: 1, // package task
|
11625
11626
|
minor: 2,
|
11626
|
-
dot:
|
11627
|
-
codeName: '
|
11627
|
+
dot: 5,
|
11628
|
+
codeName: 'singularity-expansion'
|
11628
11629
|
};
|
11629
11630
|
|
11630
11631
|
|
@@ -11712,6 +11713,9 @@ function publishExternalAPI(angular){
|
|
11712
11713
|
ngRequired: requiredDirective,
|
11713
11714
|
ngValue: ngValueDirective
|
11714
11715
|
}).
|
11716
|
+
directive({
|
11717
|
+
ngInclude: ngIncludeFillContentDirective
|
11718
|
+
}).
|
11715
11719
|
directive(ngAttributeAliasDirectives).
|
11716
11720
|
directive(ngEventDirectives);
|
11717
11721
|
$provide.provider({
|
@@ -11789,6 +11793,7 @@ function publishExternalAPI(angular){
|
|
11789
11793
|
* - [`contents()`](http://api.jquery.com/contents/)
|
11790
11794
|
* - [`css()`](http://api.jquery.com/css/)
|
11791
11795
|
* - [`data()`](http://api.jquery.com/data/)
|
11796
|
+
* - [`empty()`](http://api.jquery.com/empty/)
|
11792
11797
|
* - [`eq()`](http://api.jquery.com/eq/)
|
11793
11798
|
* - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
|
11794
11799
|
* - [`hasClass()`](http://api.jquery.com/hasClass/)
|
@@ -12101,6 +12106,15 @@ function jqLiteInheritedData(element, name, value) {
|
|
12101
12106
|
}
|
12102
12107
|
}
|
12103
12108
|
|
12109
|
+
function jqLiteEmpty(element) {
|
12110
|
+
for (var i = 0, childNodes = element.childNodes; i < childNodes.length; i++) {
|
12111
|
+
jqLiteDealoc(childNodes[i]);
|
12112
|
+
}
|
12113
|
+
while (element.firstChild) {
|
12114
|
+
element.removeChild(element.firstChild);
|
12115
|
+
}
|
12116
|
+
}
|
12117
|
+
|
12104
12118
|
//////////////////////////////////////////
|
12105
12119
|
// Functions which are declared directly.
|
12106
12120
|
//////////////////////////////////////////
|
@@ -12295,7 +12309,9 @@ forEach({
|
|
12295
12309
|
jqLiteDealoc(childNodes[i]);
|
12296
12310
|
}
|
12297
12311
|
element.innerHTML = value;
|
12298
|
-
}
|
12312
|
+
},
|
12313
|
+
|
12314
|
+
empty: jqLiteEmpty
|
12299
12315
|
}, function(fn, name){
|
12300
12316
|
/**
|
12301
12317
|
* Properties: writes return selection, reads return first value
|
@@ -12305,11 +12321,13 @@ forEach({
|
|
12305
12321
|
|
12306
12322
|
// jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
|
12307
12323
|
// in a way that survives minification.
|
12308
|
-
|
12324
|
+
// jqLiteEmpty takes no arguments but is a setter.
|
12325
|
+
if (fn !== jqLiteEmpty &&
|
12326
|
+
(((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {
|
12309
12327
|
if (isObject(arg1)) {
|
12310
12328
|
|
12311
12329
|
// we are a write, but the object properties are the key/values
|
12312
|
-
for(i=0; i < this.length; i++) {
|
12330
|
+
for (i = 0; i < this.length; i++) {
|
12313
12331
|
if (fn === jqLiteData) {
|
12314
12332
|
// data() takes the whole object in jQuery
|
12315
12333
|
fn(this[i], arg1);
|
@@ -12334,7 +12352,7 @@ forEach({
|
|
12334
12352
|
}
|
12335
12353
|
} else {
|
12336
12354
|
// we are a write, so apply to all children
|
12337
|
-
for(i=0; i < this.length; i++) {
|
12355
|
+
for (i = 0; i < this.length; i++) {
|
12338
12356
|
fn(this[i], arg1, arg2);
|
12339
12357
|
}
|
12340
12358
|
// return self for chaining
|
@@ -12705,6 +12723,28 @@ HashMap.prototype = {
|
|
12705
12723
|
* $rootScope.$digest();
|
12706
12724
|
* });
|
12707
12725
|
* </pre>
|
12726
|
+
*
|
12727
|
+
* Sometimes you want to get access to the injector of a currently running Angular app
|
12728
|
+
* from outside Angular. Perhaps, you want to inject and compile some markup after the
|
12729
|
+
* application has been bootstrapped. You can do this using extra `injector()` added
|
12730
|
+
* to JQuery/jqLite elements. See {@link angular.element}.
|
12731
|
+
*
|
12732
|
+
* *This is fairly rare but could be the case if a third party library is injecting the
|
12733
|
+
* markup.*
|
12734
|
+
*
|
12735
|
+
* In the following example a new block of HTML containing a `ng-controller`
|
12736
|
+
* directive is added to the end of the document body by JQuery. We then compile and link
|
12737
|
+
* it into the current AngularJS scope.
|
12738
|
+
*
|
12739
|
+
* <pre>
|
12740
|
+
* var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
|
12741
|
+
* $(document.body).append($div);
|
12742
|
+
*
|
12743
|
+
* angular.element(document).injector().invoke(function($compile) {
|
12744
|
+
* var scope = angular.element($div).scope();
|
12745
|
+
* $compile($div)(scope);
|
12746
|
+
* });
|
12747
|
+
* </pre>
|
12708
12748
|
*/
|
12709
12749
|
|
12710
12750
|
|
@@ -13425,24 +13465,9 @@ function createInjector(modulesToLoad) {
|
|
13425
13465
|
fn = fn[length];
|
13426
13466
|
}
|
13427
13467
|
|
13428
|
-
|
13429
|
-
//
|
13430
|
-
|
13431
|
-
case 0: return fn();
|
13432
|
-
case 1: return fn(args[0]);
|
13433
|
-
case 2: return fn(args[0], args[1]);
|
13434
|
-
case 3: return fn(args[0], args[1], args[2]);
|
13435
|
-
case 4: return fn(args[0], args[1], args[2], args[3]);
|
13436
|
-
case 5: return fn(args[0], args[1], args[2], args[3], args[4]);
|
13437
|
-
case 6: return fn(args[0], args[1], args[2], args[3], args[4], args[5]);
|
13438
|
-
case 7: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
|
13439
|
-
case 8: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
|
13440
|
-
case 9: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7],
|
13441
|
-
args[8]);
|
13442
|
-
case 10: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7],
|
13443
|
-
args[8], args[9]);
|
13444
|
-
default: return fn.apply(self, args);
|
13445
|
-
}
|
13468
|
+
// http://jsperf.com/angularjs-invoke-apply-vs-switch
|
13469
|
+
// #5388
|
13470
|
+
return fn.apply(self, args);
|
13446
13471
|
}
|
13447
13472
|
|
13448
13473
|
function instantiate(Type, locals) {
|
@@ -15628,7 +15653,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15628
15653
|
});
|
15629
15654
|
} else {
|
15630
15655
|
$template = jqLite(jqLiteClone(compileNode)).contents();
|
15631
|
-
$compileNode.
|
15656
|
+
$compileNode.empty(); // clear contents
|
15632
15657
|
childTranscludeFn = compile($template, transcludeFn);
|
15633
15658
|
}
|
15634
15659
|
}
|
@@ -15809,7 +15834,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15809
15834
|
optional = (match[2] == '?'),
|
15810
15835
|
mode = match[1], // @, =, or &
|
15811
15836
|
lastValue,
|
15812
|
-
parentGet, parentSet;
|
15837
|
+
parentGet, parentSet, compare;
|
15813
15838
|
|
15814
15839
|
isolateScope.$$isolateBindings[scopeName] = mode + attrName;
|
15815
15840
|
|
@@ -15832,6 +15857,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15832
15857
|
return;
|
15833
15858
|
}
|
15834
15859
|
parentGet = $parse(attrs[attrName]);
|
15860
|
+
if (parentGet.literal) {
|
15861
|
+
compare = equals;
|
15862
|
+
} else {
|
15863
|
+
compare = function(a,b) { return a === b; };
|
15864
|
+
}
|
15835
15865
|
parentSet = parentGet.assign || function() {
|
15836
15866
|
// reset the change, or we will throw this exception on every $digest
|
15837
15867
|
lastValue = isolateScope[scopeName] = parentGet(scope);
|
@@ -15842,10 +15872,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15842
15872
|
lastValue = isolateScope[scopeName] = parentGet(scope);
|
15843
15873
|
isolateScope.$watch(function parentValueWatch() {
|
15844
15874
|
var parentValue = parentGet(scope);
|
15845
|
-
|
15846
|
-
if (parentValue !== isolateScope[scopeName]) {
|
15875
|
+
if (!compare(parentValue, isolateScope[scopeName])) {
|
15847
15876
|
// we are out of sync and need to copy
|
15848
|
-
if (parentValue
|
15877
|
+
if (!compare(parentValue, lastValue)) {
|
15849
15878
|
// parent changed and it has precedence
|
15850
15879
|
isolateScope[scopeName] = parentValue;
|
15851
15880
|
} else {
|
@@ -15854,7 +15883,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15854
15883
|
}
|
15855
15884
|
}
|
15856
15885
|
return lastValue = parentValue;
|
15857
|
-
});
|
15886
|
+
}, null, parentGet.literal);
|
15858
15887
|
break;
|
15859
15888
|
|
15860
15889
|
case '&':
|
@@ -16056,7 +16085,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16056
16085
|
? origAsyncDirective.templateUrl($compileNode, tAttrs)
|
16057
16086
|
: origAsyncDirective.templateUrl;
|
16058
16087
|
|
16059
|
-
$compileNode.
|
16088
|
+
$compileNode.empty();
|
16060
16089
|
|
16061
16090
|
$http.get($sce.getTrustedResourceUrl(templateUrl), {cache: $templateCache}).
|
16062
16091
|
success(function(content) {
|
@@ -20371,7 +20400,7 @@ function $ParseProvider() {
|
|
20371
20400
|
*
|
20372
20401
|
* # Differences between Kris Kowal's Q and $q
|
20373
20402
|
*
|
20374
|
-
* There are
|
20403
|
+
* There are two main differences:
|
20375
20404
|
*
|
20376
20405
|
* - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation
|
20377
20406
|
* mechanism in angular, which means faster propagation of resolution or rejection into your
|
@@ -20905,11 +20934,11 @@ function $RootScopeProvider(){
|
|
20905
20934
|
* @description
|
20906
20935
|
* Creates a new child {@link ng.$rootScope.Scope scope}.
|
20907
20936
|
*
|
20908
|
-
* The parent scope will propagate the {@link ng.$rootScope.Scope
|
20909
|
-
* {@link ng.$rootScope.Scope
|
20910
|
-
* scope hierarchy using {@link ng.$rootScope.Scope
|
20937
|
+
* The parent scope will propagate the {@link ng.$rootScope.Scope#methods_$digest $digest()} and
|
20938
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} events. The scope can be removed from the
|
20939
|
+
* scope hierarchy using {@link ng.$rootScope.Scope#methods_$destroy $destroy()}.
|
20911
20940
|
*
|
20912
|
-
* {@link ng.$rootScope.Scope
|
20941
|
+
* {@link ng.$rootScope.Scope#methods_$destroy $destroy()} must be called on a scope when it is
|
20913
20942
|
* desired for the scope and its child scopes to be permanently detached from the parent and
|
20914
20943
|
* thus stop participating in model change detection and listener notification by invoking.
|
20915
20944
|
*
|
@@ -20962,11 +20991,11 @@ function $RootScopeProvider(){
|
|
20962
20991
|
* @description
|
20963
20992
|
* Registers a `listener` callback to be executed whenever the `watchExpression` changes.
|
20964
20993
|
*
|
20965
|
-
* - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope
|
20994
|
+
* - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#methods_$digest
|
20966
20995
|
* $digest()} and should return the value that will be watched. (Since
|
20967
|
-
* {@link ng.$rootScope.Scope
|
20996
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} reruns when it detects changes the
|
20968
20997
|
* `watchExpression` can execute multiple times per
|
20969
|
-
* {@link ng.$rootScope.Scope
|
20998
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest()} and should be idempotent.)
|
20970
20999
|
* - The `listener` is called only when the value from the current `watchExpression` and the
|
20971
21000
|
* previous call to `watchExpression` are not equal (with the exception of the initial run,
|
20972
21001
|
* see below). The inequality is determined according to
|
@@ -20978,13 +21007,13 @@ function $RootScopeProvider(){
|
|
20978
21007
|
* iteration limit is 10 to prevent an infinite loop deadlock.
|
20979
21008
|
*
|
20980
21009
|
*
|
20981
|
-
* If you want to be notified whenever {@link ng.$rootScope.Scope
|
21010
|
+
* If you want to be notified whenever {@link ng.$rootScope.Scope#methods_$digest $digest} is called,
|
20982
21011
|
* you can register a `watchExpression` function with no `listener`. (Since `watchExpression`
|
20983
|
-
* can execute multiple times per {@link ng.$rootScope.Scope
|
21012
|
+
* can execute multiple times per {@link ng.$rootScope.Scope#methods_$digest $digest} cycle when a
|
20984
21013
|
* change is detected, be prepared for multiple calls to your listener.)
|
20985
21014
|
*
|
20986
21015
|
* After a watcher is registered with the scope, the `listener` fn is called asynchronously
|
20987
|
-
* (via {@link ng.$rootScope.Scope
|
21016
|
+
* (via {@link ng.$rootScope.Scope#methods_$evalAsync $evalAsync}) to initialize the
|
20988
21017
|
* watcher. In rare cases, this is undesirable because the listener is called when the result
|
20989
21018
|
* of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you
|
20990
21019
|
* can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the
|
@@ -21048,7 +21077,7 @@ function $RootScopeProvider(){
|
|
21048
21077
|
*
|
21049
21078
|
*
|
21050
21079
|
* @param {(function()|string)} watchExpression Expression that is evaluated on each
|
21051
|
-
* {@link ng.$rootScope.Scope
|
21080
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest} cycle. A change in the return value triggers
|
21052
21081
|
* a call to the `listener`.
|
21053
21082
|
*
|
21054
21083
|
* - `string`: Evaluated as {@link guide/expression expression}
|
@@ -21146,7 +21175,7 @@ function $RootScopeProvider(){
|
|
21146
21175
|
*
|
21147
21176
|
* @param {string|Function(scope)} obj Evaluated as {@link guide/expression expression}. The
|
21148
21177
|
* expression value should evaluate to an object or an array which is observed on each
|
21149
|
-
* {@link ng.$rootScope.Scope
|
21178
|
+
* {@link ng.$rootScope.Scope#methods_$digest $digest} cycle. Any shallow change within the
|
21150
21179
|
* collection will trigger a call to the `listener`.
|
21151
21180
|
*
|
21152
21181
|
* @param {function(newCollection, oldCollection, scope)} listener a callback function that is
|
@@ -21251,9 +21280,9 @@ function $RootScopeProvider(){
|
|
21251
21280
|
* @function
|
21252
21281
|
*
|
21253
21282
|
* @description
|
21254
|
-
* Processes all of the {@link ng.$rootScope.Scope
|
21255
|
-
* its children. Because a {@link ng.$rootScope.Scope
|
21256
|
-
* the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope
|
21283
|
+
* Processes all of the {@link ng.$rootScope.Scope#methods_$watch watchers} of the current scope and
|
21284
|
+
* its children. Because a {@link ng.$rootScope.Scope#methods_$watch watcher}'s listener can change
|
21285
|
+
* the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#methods_$watch watchers}
|
21257
21286
|
* until no more listeners are firing. This means that it is possible to get into an infinite
|
21258
21287
|
* loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of
|
21259
21288
|
* iterations exceeds 10.
|
@@ -21261,12 +21290,12 @@ function $RootScopeProvider(){
|
|
21261
21290
|
* Usually, you don't call `$digest()` directly in
|
21262
21291
|
* {@link ng.directive:ngController controllers} or in
|
21263
21292
|
* {@link ng.$compileProvider#methods_directive directives}.
|
21264
|
-
* Instead, you should call {@link ng.$rootScope.Scope
|
21293
|
+
* Instead, you should call {@link ng.$rootScope.Scope#methods_$apply $apply()} (typically from within
|
21265
21294
|
* a {@link ng.$compileProvider#methods_directive directives}), which will force a `$digest()`.
|
21266
21295
|
*
|
21267
21296
|
* If you want to be notified whenever `$digest()` is called,
|
21268
21297
|
* you can register a `watchExpression` function with
|
21269
|
-
* {@link ng.$rootScope.Scope
|
21298
|
+
* {@link ng.$rootScope.Scope#methods_$watch $watch()} with no `listener`.
|
21270
21299
|
*
|
21271
21300
|
* In unit tests, you may need to call `$digest()` to simulate the scope life cycle.
|
21272
21301
|
*
|
@@ -21421,7 +21450,7 @@ function $RootScopeProvider(){
|
|
21421
21450
|
*
|
21422
21451
|
* @description
|
21423
21452
|
* Removes the current scope (and all of its children) from the parent scope. Removal implies
|
21424
|
-
* that calls to {@link ng.$rootScope.Scope
|
21453
|
+
* that calls to {@link ng.$rootScope.Scope#methods_$digest $digest()} will no longer
|
21425
21454
|
* propagate to the current scope and its children. Removal also implies that the current
|
21426
21455
|
* scope is eligible for garbage collection.
|
21427
21456
|
*
|
@@ -21503,7 +21532,7 @@ function $RootScopeProvider(){
|
|
21503
21532
|
*
|
21504
21533
|
* - it will execute after the function that scheduled the evaluation (preferably before DOM
|
21505
21534
|
* rendering).
|
21506
|
-
* - at least one {@link ng.$rootScope.Scope
|
21535
|
+
* - at least one {@link ng.$rootScope.Scope#methods_$digest $digest cycle} will be performed after
|
21507
21536
|
* `expression` execution.
|
21508
21537
|
*
|
21509
21538
|
* Any exceptions from the execution of the expression are forwarded to the
|
@@ -21548,7 +21577,7 @@ function $RootScopeProvider(){
|
|
21548
21577
|
* framework. (For example from browser DOM events, setTimeout, XHR or third party libraries).
|
21549
21578
|
* Because we are calling into the angular framework we need to perform proper scope life
|
21550
21579
|
* cycle of {@link ng.$exceptionHandler exception handling},
|
21551
|
-
* {@link ng.$rootScope.Scope
|
21580
|
+
* {@link ng.$rootScope.Scope#methods_$digest executing watches}.
|
21552
21581
|
*
|
21553
21582
|
* ## Life cycle
|
21554
21583
|
*
|
@@ -21569,11 +21598,11 @@ function $RootScopeProvider(){
|
|
21569
21598
|
* Scope's `$apply()` method transitions through the following stages:
|
21570
21599
|
*
|
21571
21600
|
* 1. The {@link guide/expression expression} is executed using the
|
21572
|
-
* {@link ng.$rootScope.Scope
|
21601
|
+
* {@link ng.$rootScope.Scope#methods_$eval $eval()} method.
|
21573
21602
|
* 2. Any exceptions from the execution of the expression are forwarded to the
|
21574
21603
|
* {@link ng.$exceptionHandler $exceptionHandler} service.
|
21575
|
-
* 3. The {@link ng.$rootScope.Scope
|
21576
|
-
* expression was executed using the {@link ng.$rootScope.Scope
|
21604
|
+
* 3. The {@link ng.$rootScope.Scope#methods_$watch watch} listeners are fired immediately after the
|
21605
|
+
* expression was executed using the {@link ng.$rootScope.Scope#methods_$digest $digest()} method.
|
21577
21606
|
*
|
21578
21607
|
*
|
21579
21608
|
* @param {(string|function())=} exp An angular expression to be executed.
|
@@ -21607,7 +21636,7 @@ function $RootScopeProvider(){
|
|
21607
21636
|
* @function
|
21608
21637
|
*
|
21609
21638
|
* @description
|
21610
|
-
* Listens on events of a given type. See {@link ng.$rootScope.Scope
|
21639
|
+
* Listens on events of a given type. See {@link ng.$rootScope.Scope#methods_$emit $emit} for
|
21611
21640
|
* discussion of event life cycle.
|
21612
21641
|
*
|
21613
21642
|
* The event listener function format is: `function(event, args...)`. The `event` object
|
@@ -21648,20 +21677,20 @@ function $RootScopeProvider(){
|
|
21648
21677
|
*
|
21649
21678
|
* @description
|
21650
21679
|
* Dispatches an event `name` upwards through the scope hierarchy notifying the
|
21651
|
-
* registered {@link ng.$rootScope.Scope
|
21680
|
+
* registered {@link ng.$rootScope.Scope#methods_$on} listeners.
|
21652
21681
|
*
|
21653
21682
|
* The event life cycle starts at the scope on which `$emit` was called. All
|
21654
|
-
* {@link ng.$rootScope.Scope
|
21683
|
+
* {@link ng.$rootScope.Scope#methods_$on listeners} listening for `name` event on this scope get
|
21655
21684
|
* notified. Afterwards, the event traverses upwards toward the root scope and calls all
|
21656
21685
|
* registered listeners along the way. The event will stop propagating if one of the listeners
|
21657
21686
|
* cancels it.
|
21658
21687
|
*
|
21659
|
-
* Any exception emitted from the {@link ng.$rootScope.Scope
|
21688
|
+
* Any exception emitted from the {@link ng.$rootScope.Scope#methods_$on listeners} will be passed
|
21660
21689
|
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
|
21661
21690
|
*
|
21662
21691
|
* @param {string} name Event name to emit.
|
21663
21692
|
* @param {...*} args Optional set of arguments which will be passed onto the event listeners.
|
21664
|
-
* @return {Object} Event object (see {@link ng.$rootScope.Scope
|
21693
|
+
* @return {Object} Event object (see {@link ng.$rootScope.Scope#methods_$on}).
|
21665
21694
|
*/
|
21666
21695
|
$emit: function(name, args) {
|
21667
21696
|
var empty = [],
|
@@ -21717,19 +21746,19 @@ function $RootScopeProvider(){
|
|
21717
21746
|
*
|
21718
21747
|
* @description
|
21719
21748
|
* Dispatches an event `name` downwards to all child scopes (and their children) notifying the
|
21720
|
-
* registered {@link ng.$rootScope.Scope
|
21749
|
+
* registered {@link ng.$rootScope.Scope#methods_$on} listeners.
|
21721
21750
|
*
|
21722
21751
|
* The event life cycle starts at the scope on which `$broadcast` was called. All
|
21723
|
-
* {@link ng.$rootScope.Scope
|
21752
|
+
* {@link ng.$rootScope.Scope#methods_$on listeners} listening for `name` event on this scope get
|
21724
21753
|
* notified. Afterwards, the event propagates to all direct and indirect scopes of the current
|
21725
21754
|
* scope and calls all registered listeners along the way. The event cannot be canceled.
|
21726
21755
|
*
|
21727
|
-
* Any exception emitted from the {@link ng.$rootScope.Scope
|
21756
|
+
* Any exception emitted from the {@link ng.$rootScope.Scope#methods_$on listeners} will be passed
|
21728
21757
|
* onto the {@link ng.$exceptionHandler $exceptionHandler} service.
|
21729
21758
|
*
|
21730
21759
|
* @param {string} name Event name to broadcast.
|
21731
21760
|
* @param {...*} args Optional set of arguments which will be passed onto the event listeners.
|
21732
|
-
* @return {Object} Event object, see {@link ng.$rootScope.Scope
|
21761
|
+
* @return {Object} Event object, see {@link ng.$rootScope.Scope#methods_$on}
|
21733
21762
|
*/
|
21734
21763
|
$broadcast: function(name, args) {
|
21735
21764
|
var target = this,
|
@@ -24466,14 +24495,16 @@ var htmlAnchorDirective = valueFn({
|
|
24466
24495
|
element.append(document.createComment('IE fix'));
|
24467
24496
|
}
|
24468
24497
|
|
24469
|
-
|
24470
|
-
|
24471
|
-
|
24472
|
-
|
24473
|
-
|
24474
|
-
|
24475
|
-
|
24476
|
-
|
24498
|
+
if (!attr.href && !attr.name) {
|
24499
|
+
return function(scope, element) {
|
24500
|
+
element.on('click', function(event){
|
24501
|
+
// if we have no href url, then don't navigate anywhere.
|
24502
|
+
if (!element.attr('href')) {
|
24503
|
+
event.preventDefault();
|
24504
|
+
}
|
24505
|
+
});
|
24506
|
+
};
|
24507
|
+
}
|
24477
24508
|
}
|
24478
24509
|
});
|
24479
24510
|
|
@@ -26654,7 +26685,6 @@ var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
|
|
26654
26685
|
id="{{name}}"
|
26655
26686
|
name="favorite">
|
26656
26687
|
</label>
|
26657
|
-
</span>
|
26658
26688
|
<div>You chose {{my.favorite}}</div>
|
26659
26689
|
</form>
|
26660
26690
|
</doc:source>
|
@@ -28045,13 +28075,14 @@ var ngIfDirective = ['$animate', function($animate) {
|
|
28045
28075
|
* @description
|
28046
28076
|
* Emitted every time the ngInclude content is reloaded.
|
28047
28077
|
*/
|
28048
|
-
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$
|
28049
|
-
function($http, $templateCache, $anchorScroll, $
|
28078
|
+
var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$animate', '$sce',
|
28079
|
+
function($http, $templateCache, $anchorScroll, $animate, $sce) {
|
28050
28080
|
return {
|
28051
28081
|
restrict: 'ECA',
|
28052
28082
|
priority: 400,
|
28053
28083
|
terminal: true,
|
28054
28084
|
transclude: 'element',
|
28085
|
+
controller: angular.noop,
|
28055
28086
|
compile: function(element, attr) {
|
28056
28087
|
var srcExp = attr.ngInclude || attr.src,
|
28057
28088
|
onloadExp = attr.onload || '',
|
@@ -28085,6 +28116,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
28085
28116
|
$http.get(src, {cache: $templateCache}).success(function(response) {
|
28086
28117
|
if (thisChangeId !== changeCounter) return;
|
28087
28118
|
var newScope = scope.$new();
|
28119
|
+
ctrl.template = response;
|
28088
28120
|
|
28089
28121
|
// Note: This will also link all children of ng-include that were contained in the original
|
28090
28122
|
// html. If that content contains controllers, ... they could pollute/change the scope.
|
@@ -28092,15 +28124,14 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
28092
28124
|
// Note: We can't remove them in the cloneAttchFn of $transclude as that
|
28093
28125
|
// function is called before linking the content, which would apply child
|
28094
28126
|
// directives to non existing elements.
|
28095
|
-
var clone = $transclude(newScope,
|
28096
|
-
|
28127
|
+
var clone = $transclude(newScope, function(clone) {
|
28128
|
+
cleanupLastIncludeContent();
|
28129
|
+
$animate.enter(clone, null, $element, afterAnimation);
|
28130
|
+
});
|
28097
28131
|
|
28098
28132
|
currentScope = newScope;
|
28099
28133
|
currentElement = clone;
|
28100
28134
|
|
28101
|
-
currentElement.html(response);
|
28102
|
-
$animate.enter(currentElement, null, $element, afterAnimation);
|
28103
|
-
$compile(currentElement.contents())(currentScope);
|
28104
28135
|
currentScope.$emit('$includeContentLoaded');
|
28105
28136
|
scope.$eval(onloadExp);
|
28106
28137
|
}).error(function() {
|
@@ -28109,6 +28140,7 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
28109
28140
|
scope.$emit('$includeContentRequested');
|
28110
28141
|
} else {
|
28111
28142
|
cleanupLastIncludeContent();
|
28143
|
+
ctrl.template = null;
|
28112
28144
|
}
|
28113
28145
|
});
|
28114
28146
|
};
|
@@ -28116,6 +28148,24 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
28116
28148
|
};
|
28117
28149
|
}];
|
28118
28150
|
|
28151
|
+
// This directive is called during the $transclude call of the first `ngInclude` directive.
|
28152
|
+
// It will replace and compile the content of the element with the loaded template.
|
28153
|
+
// We need this directive so that the element content is already filled when
|
28154
|
+
// the link function of another directive on the same element as ngInclude
|
28155
|
+
// is called.
|
28156
|
+
var ngIncludeFillContentDirective = ['$compile',
|
28157
|
+
function($compile) {
|
28158
|
+
return {
|
28159
|
+
restrict: 'ECA',
|
28160
|
+
priority: -400,
|
28161
|
+
require: 'ngInclude',
|
28162
|
+
link: function(scope, $element, $attr, ctrl) {
|
28163
|
+
$element.html(ctrl.template);
|
28164
|
+
$compile($element.contents())(scope);
|
28165
|
+
}
|
28166
|
+
};
|
28167
|
+
}];
|
28168
|
+
|
28119
28169
|
/**
|
28120
28170
|
* @ngdoc directive
|
28121
28171
|
* @name ng.directive:ngInit
|
@@ -29162,19 +29212,26 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) {
|
|
29162
29212
|
* @restrict EA
|
29163
29213
|
*
|
29164
29214
|
* @description
|
29165
|
-
* The ngSwitch directive is used to conditionally swap DOM structure on your template based on a scope expression.
|
29166
|
-
* Elements within ngSwitch but without ngSwitchWhen or ngSwitchDefault directives will be preserved at the location
|
29215
|
+
* The `ngSwitch` directive is used to conditionally swap DOM structure on your template based on a scope expression.
|
29216
|
+
* Elements within `ngSwitch` but without `ngSwitchWhen` or `ngSwitchDefault` directives will be preserved at the location
|
29167
29217
|
* as specified in the template.
|
29168
29218
|
*
|
29169
29219
|
* The directive itself works similar to ngInclude, however, instead of downloading template code (or loading it
|
29170
|
-
* from the template cache), ngSwitch simply choses one of the nested elements and makes it visible based on which element
|
29220
|
+
* from the template cache), `ngSwitch` simply choses one of the nested elements and makes it visible based on which element
|
29171
29221
|
* matches the value obtained from the evaluated expression. In other words, you define a container element
|
29172
|
-
* (where you place the directive), place an expression on the
|
29173
|
-
* (or the
|
29222
|
+
* (where you place the directive), place an expression on the **`on="..."` attribute**
|
29223
|
+
* (or the **`ng-switch="..."` attribute**), define any inner elements inside of the directive and place
|
29174
29224
|
* a when attribute per element. The when attribute is used to inform ngSwitch which element to display when the on
|
29175
29225
|
* expression is evaluated. If a matching expression is not found via a when attribute then an element with the default
|
29176
29226
|
* attribute is displayed.
|
29177
29227
|
*
|
29228
|
+
* <div class="alert alert-info">
|
29229
|
+
* Be aware that the attribute values to match against cannot be expressions. They are interpreted
|
29230
|
+
* as literal string values to match against.
|
29231
|
+
* For example, **`ng-switch-when="someVal"`** will match against the string `"someVal"` not against the
|
29232
|
+
* value of the expression `$scope.someVal`.
|
29233
|
+
* </div>
|
29234
|
+
|
29178
29235
|
* @animations
|
29179
29236
|
* enter - happens after the ngSwitch contents change and the matched child element is placed inside the container
|
29180
29237
|
* leave - happens just after the ngSwitch contents change and just before the former contents are removed from the DOM
|
@@ -29186,6 +29243,7 @@ var ngStyleDirective = ngDirective(function(scope, element, attr) {
|
|
29186
29243
|
* <ANY ng-switch-default>...</ANY>
|
29187
29244
|
* </ANY>
|
29188
29245
|
*
|
29246
|
+
*
|
29189
29247
|
* @scope
|
29190
29248
|
* @priority 800
|
29191
29249
|
* @param {*} ngSwitch|on expression to match against <tt>ng-switch-when</tt>.
|
@@ -29403,7 +29461,7 @@ var ngTranscludeDirective = ngDirective({
|
|
29403
29461
|
|
29404
29462
|
link: function($scope, $element, $attrs, controller) {
|
29405
29463
|
controller.$transclude(function(clone) {
|
29406
|
-
$element.
|
29464
|
+
$element.empty();
|
29407
29465
|
$element.append(clone);
|
29408
29466
|
});
|
29409
29467
|
}
|
@@ -29787,13 +29845,13 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
29787
29845
|
// becomes the compilation root
|
29788
29846
|
nullOption.removeClass('ng-scope');
|
29789
29847
|
|
29790
|
-
// we need to remove it before calling selectElement.
|
29848
|
+
// we need to remove it before calling selectElement.empty() because otherwise IE will
|
29791
29849
|
// remove the label from the element. wtf?
|
29792
29850
|
nullOption.remove();
|
29793
29851
|
}
|
29794
29852
|
|
29795
29853
|
// clear contents, we'll add what's needed based on the model
|
29796
|
-
selectElement.
|
29854
|
+
selectElement.empty();
|
29797
29855
|
|
29798
29856
|
selectElement.on('change', function() {
|
29799
29857
|
scope.$apply(function() {
|