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
|
*/
|
@@ -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() {
|