angularjs-rails 1.2.0.rc2 → 1.2.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/angularjs-rails/version.rb +2 -1
- data/vendor/assets/javascripts/angular-animate.js +237 -101
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +10 -5
- data/vendor/assets/javascripts/angular-mocks.js +160 -30
- data/vendor/assets/javascripts/angular-resource.js +15 -7
- data/vendor/assets/javascripts/angular-route.js +33 -40
- data/vendor/assets/javascripts/angular-sanitize.js +12 -3
- data/vendor/assets/javascripts/angular-scenario.js +11786 -10305
- data/vendor/assets/javascripts/angular-touch.js +13 -14
- data/vendor/assets/javascripts/angular.js +2328 -1207
- data/vendor/assets/javascripts/unstable/angular-cookies.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-loader.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-mobile.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-mocks.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-resource.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-sanitize.js +0 -0
- data/vendor/assets/javascripts/unstable/angular-scenario.js +0 -0
- data/vendor/assets/javascripts/unstable/angular.js +0 -0
- metadata +47 -6
- data/vendor/assets/javascripts/angular-bootstrap-prettify.js +0 -1835
- data/vendor/assets/javascripts/angular-bootstrap.js +0 -175
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.0-rc.
|
2
|
+
* @license AngularJS v1.2.0-rc.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
function setupModuleLoader(window) {
|
18
18
|
|
19
|
+
var $injectorMinErr = minErr('$injector');
|
20
|
+
|
19
21
|
function ensure(obj, name, factory) {
|
20
22
|
return obj[name] || (obj[name] = factory());
|
21
23
|
}
|
@@ -74,12 +76,13 @@ function setupModuleLoader(window) {
|
|
74
76
|
* @returns {module} new module with the {@link angular.Module} api.
|
75
77
|
*/
|
76
78
|
return function module(name, requires, configFn) {
|
79
|
+
assertNotHasOwnProperty(name, 'module');
|
77
80
|
if (requires && modules.hasOwnProperty(name)) {
|
78
81
|
modules[name] = null;
|
79
82
|
}
|
80
83
|
return ensure(modules, name, function() {
|
81
84
|
if (!requires) {
|
82
|
-
throw
|
85
|
+
throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled the module name " +
|
83
86
|
"or forgot to load it. If registering a module ensure that you specify the dependencies as the second " +
|
84
87
|
"argument.", name);
|
85
88
|
}
|
@@ -182,7 +185,7 @@ function setupModuleLoader(window) {
|
|
182
185
|
* @param {Function} animationFactory Factory function for creating new instance of an animation.
|
183
186
|
* @description
|
184
187
|
*
|
185
|
-
* **NOTE**: animations
|
188
|
+
* **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
|
186
189
|
*
|
187
190
|
*
|
188
191
|
* Defines an animation hook that can be later used with {@link ngAnimate.$animate $animate} service and
|
@@ -222,7 +225,8 @@ function setupModuleLoader(window) {
|
|
222
225
|
* @ngdoc method
|
223
226
|
* @name angular.Module#controller
|
224
227
|
* @methodOf angular.Module
|
225
|
-
* @param {string} name Controller name
|
228
|
+
* @param {string|Object} name Controller name, or an object map of controllers where the
|
229
|
+
* keys are the names and the values are the constructors.
|
226
230
|
* @param {Function} constructor Controller constructor function.
|
227
231
|
* @description
|
228
232
|
* See {@link ng.$controllerProvider#register $controllerProvider.register()}.
|
@@ -233,7 +237,8 @@ function setupModuleLoader(window) {
|
|
233
237
|
* @ngdoc method
|
234
238
|
* @name angular.Module#directive
|
235
239
|
* @methodOf angular.Module
|
236
|
-
* @param {string} name
|
240
|
+
* @param {string|Object} name Directive name, or an object map of directives where the
|
241
|
+
* keys are the names and the values are the factories.
|
237
242
|
* @param {Function} directiveFactory Factory function for creating new instance of
|
238
243
|
* directives.
|
239
244
|
* @description
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.0-rc.
|
2
|
+
* @license AngularJS v1.2.0-rc.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*
|
@@ -75,6 +75,13 @@ angular.mock.$Browser = function() {
|
|
75
75
|
};
|
76
76
|
|
77
77
|
|
78
|
+
/**
|
79
|
+
* @name ngMock.$browser#defer.now
|
80
|
+
* @propertyOf ngMock.$browser
|
81
|
+
*
|
82
|
+
* @description
|
83
|
+
* Current milliseconds mock time.
|
84
|
+
*/
|
78
85
|
self.defer.now = 0;
|
79
86
|
|
80
87
|
|
@@ -119,29 +126,6 @@ angular.mock.$Browser = function() {
|
|
119
126
|
}
|
120
127
|
};
|
121
128
|
|
122
|
-
/**
|
123
|
-
* @name ngMock.$browser#defer.flushNext
|
124
|
-
* @methodOf ngMock.$browser
|
125
|
-
*
|
126
|
-
* @description
|
127
|
-
* Flushes next pending request and compares it to the provided delay
|
128
|
-
*
|
129
|
-
* @param {number=} expectedDelay the delay value that will be asserted against the delay of the next timeout function
|
130
|
-
*/
|
131
|
-
self.defer.flushNext = function(expectedDelay) {
|
132
|
-
var tick = self.deferredFns.shift();
|
133
|
-
expect(tick.time).toEqual(expectedDelay);
|
134
|
-
tick.fn();
|
135
|
-
};
|
136
|
-
|
137
|
-
/**
|
138
|
-
* @name ngMock.$browser#defer.now
|
139
|
-
* @propertyOf ngMock.$browser
|
140
|
-
*
|
141
|
-
* @description
|
142
|
-
* Current milliseconds mock time.
|
143
|
-
*/
|
144
|
-
|
145
129
|
self.$$baseHref = '';
|
146
130
|
self.baseHref = function() {
|
147
131
|
return this.$$baseHref;
|
@@ -454,6 +438,119 @@ angular.mock.$LogProvider = function() {
|
|
454
438
|
};
|
455
439
|
|
456
440
|
|
441
|
+
/**
|
442
|
+
* @ngdoc service
|
443
|
+
* @name ngMock.$interval
|
444
|
+
*
|
445
|
+
* @description
|
446
|
+
* Mock implementation of the $interval service.
|
447
|
+
*
|
448
|
+
* Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
|
449
|
+
* move forward by `millis` milliseconds and trigger any functions scheduled to run in that
|
450
|
+
* time.
|
451
|
+
*
|
452
|
+
* @param {function()} fn A function that should be called repeatedly.
|
453
|
+
* @param {number} delay Number of milliseconds between each function call.
|
454
|
+
* @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
|
455
|
+
* indefinitely.
|
456
|
+
* @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
|
457
|
+
* will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
|
458
|
+
* @returns {promise} A promise which will be notified on each iteration.
|
459
|
+
*/
|
460
|
+
angular.mock.$IntervalProvider = function() {
|
461
|
+
this.$get = ['$rootScope', '$q',
|
462
|
+
function($rootScope, $q) {
|
463
|
+
var repeatFns = [],
|
464
|
+
nextRepeatId = 0,
|
465
|
+
now = 0;
|
466
|
+
|
467
|
+
var $interval = function(fn, delay, count, invokeApply) {
|
468
|
+
var deferred = $q.defer(),
|
469
|
+
promise = deferred.promise,
|
470
|
+
count = (angular.isDefined(count)) ? count : 0,
|
471
|
+
iteration = 0,
|
472
|
+
skipApply = (angular.isDefined(invokeApply) && !invokeApply);
|
473
|
+
|
474
|
+
promise.then(null, null, fn);
|
475
|
+
|
476
|
+
promise.$$intervalId = nextRepeatId;
|
477
|
+
|
478
|
+
function tick() {
|
479
|
+
deferred.notify(iteration++);
|
480
|
+
|
481
|
+
if (count > 0 && iteration >= count) {
|
482
|
+
var fnIndex;
|
483
|
+
deferred.resolve(iteration);
|
484
|
+
|
485
|
+
angular.forEach(repeatFns, function(fn, index) {
|
486
|
+
if (fn.id === promise.$$intervalId) fnIndex = index;
|
487
|
+
});
|
488
|
+
|
489
|
+
if (fnIndex !== undefined) {
|
490
|
+
repeatFns.splice(fnIndex, 1);
|
491
|
+
}
|
492
|
+
}
|
493
|
+
|
494
|
+
if (!skipApply) $rootScope.$apply();
|
495
|
+
};
|
496
|
+
|
497
|
+
repeatFns.push({
|
498
|
+
nextTime:(now + delay),
|
499
|
+
delay: delay,
|
500
|
+
fn: tick,
|
501
|
+
id: nextRepeatId,
|
502
|
+
deferred: deferred
|
503
|
+
});
|
504
|
+
repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
|
505
|
+
|
506
|
+
nextRepeatId++;
|
507
|
+
return promise;
|
508
|
+
};
|
509
|
+
|
510
|
+
$interval.cancel = function(promise) {
|
511
|
+
var fnIndex;
|
512
|
+
|
513
|
+
angular.forEach(repeatFns, function(fn, index) {
|
514
|
+
if (fn.id === promise.$$intervalId) fnIndex = index;
|
515
|
+
});
|
516
|
+
|
517
|
+
if (fnIndex !== undefined) {
|
518
|
+
repeatFns[fnIndex].deferred.reject('canceled');
|
519
|
+
repeatFns.splice(fnIndex, 1);
|
520
|
+
return true;
|
521
|
+
}
|
522
|
+
|
523
|
+
return false;
|
524
|
+
};
|
525
|
+
|
526
|
+
/**
|
527
|
+
* @ngdoc method
|
528
|
+
* @name ngMock.$interval#flush
|
529
|
+
* @methodOf ngMock.$interval
|
530
|
+
* @description
|
531
|
+
*
|
532
|
+
* Runs interval tasks scheduled to be run in the next `millis` milliseconds.
|
533
|
+
*
|
534
|
+
* @param {number=} millis maximum timeout amount to flush up until.
|
535
|
+
*
|
536
|
+
* @return {number} The amount of time moved forward.
|
537
|
+
*/
|
538
|
+
$interval.flush = function(millis) {
|
539
|
+
now += millis;
|
540
|
+
while (repeatFns.length && repeatFns[0].nextTime <= now) {
|
541
|
+
var task = repeatFns[0];
|
542
|
+
task.fn();
|
543
|
+
task.nextTime += task.delay;
|
544
|
+
repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
|
545
|
+
}
|
546
|
+
return millis;
|
547
|
+
};
|
548
|
+
|
549
|
+
return $interval;
|
550
|
+
}];
|
551
|
+
};
|
552
|
+
|
553
|
+
|
457
554
|
(function() {
|
458
555
|
var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
|
459
556
|
|
@@ -672,7 +769,7 @@ angular.mock.animate = angular.module('mock.animate', ['ng'])
|
|
672
769
|
}
|
673
770
|
};
|
674
771
|
|
675
|
-
forEach(['enter','leave','move','addClass','removeClass'], function(method) {
|
772
|
+
angular.forEach(['enter','leave','move','addClass','removeClass'], function(method) {
|
676
773
|
animate[method] = function() {
|
677
774
|
var params = arguments;
|
678
775
|
animate.queue.push({
|
@@ -747,7 +844,7 @@ angular.mock.dump = function(object) {
|
|
747
844
|
offset = offset || ' ';
|
748
845
|
var log = [offset + 'Scope(' + scope.$id + '): {'];
|
749
846
|
for ( var key in scope ) {
|
750
|
-
if (
|
847
|
+
if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
|
751
848
|
log.push(' ' + key + ': ' + angular.toJson(scope[key]));
|
752
849
|
}
|
753
850
|
}
|
@@ -1597,6 +1694,7 @@ angular.module('ngMock', ['ng']).provider({
|
|
1597
1694
|
$browser: angular.mock.$BrowserProvider,
|
1598
1695
|
$exceptionHandler: angular.mock.$ExceptionHandlerProvider,
|
1599
1696
|
$log: angular.mock.$LogProvider,
|
1697
|
+
$interval: angular.mock.$IntervalProvider,
|
1600
1698
|
$httpBackend: angular.mock.$HttpBackendProvider,
|
1601
1699
|
$rootElement: angular.mock.$RootElementProvider
|
1602
1700
|
}).config(function($provide) {
|
@@ -1789,7 +1887,7 @@ angular.mock.clearDataCache = function() {
|
|
1789
1887
|
cache = angular.element.cache;
|
1790
1888
|
|
1791
1889
|
for(key in cache) {
|
1792
|
-
if (
|
1890
|
+
if (Object.prototype.hasOwnProperty.call(cache,key)) {
|
1793
1891
|
var handle = cache[key].handle;
|
1794
1892
|
|
1795
1893
|
handle && angular.element(handle.elem).off();
|
@@ -1892,8 +1990,40 @@ angular.mock.clearDataCache = function() {
|
|
1892
1990
|
* instance of {@link AUTO.$injector $injector} per test, which is then used for
|
1893
1991
|
* resolving references.
|
1894
1992
|
*
|
1895
|
-
* See also {@link angular.mock.module module}
|
1896
1993
|
*
|
1994
|
+
* ## Resolving References (Underscore Wrapping)
|
1995
|
+
* Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this
|
1996
|
+
* in multiple `it()` clauses. To be able to do this we must assign the reference to a variable
|
1997
|
+
* that is declared in the scope of the `describe()` block. Since we would, most likely, want
|
1998
|
+
* the variable to have the same name of the reference we have a problem, since the parameter
|
1999
|
+
* to the `inject()` function would hide the outer variable.
|
2000
|
+
*
|
2001
|
+
* To help with this, the injected parameters can, optionally, be enclosed with underscores.
|
2002
|
+
* These are ignored by the injector when the reference name is resolved.
|
2003
|
+
*
|
2004
|
+
* For example, the parameter `_myService_` would be resolved as the reference `myService`.
|
2005
|
+
* Since it is available in the function body as _myService_, we can then assign it to a variable
|
2006
|
+
* defined in an outer scope.
|
2007
|
+
*
|
2008
|
+
* ```
|
2009
|
+
* // Defined out reference variable outside
|
2010
|
+
* var myService;
|
2011
|
+
*
|
2012
|
+
* // Wrap the parameter in underscores
|
2013
|
+
* beforeEach( inject( function(_myService_){
|
2014
|
+
* myService = _myService_;
|
2015
|
+
* }));
|
2016
|
+
*
|
2017
|
+
* // Use myService in a series of tests.
|
2018
|
+
* it('makes use of myService', function() {
|
2019
|
+
* myService.doStuff();
|
2020
|
+
* });
|
2021
|
+
*
|
2022
|
+
* ```
|
2023
|
+
*
|
2024
|
+
* See also {@link angular.mock.module angular.mock.module}
|
2025
|
+
*
|
2026
|
+
* ## Example
|
1897
2027
|
* Example of what a typical jasmine tests looks like with the inject method.
|
1898
2028
|
* <pre>
|
1899
2029
|
*
|
@@ -1926,11 +2056,11 @@ angular.mock.clearDataCache = function() {
|
|
1926
2056
|
* inject(function(version) {
|
1927
2057
|
* expect(version).toEqual('overridden');
|
1928
2058
|
* });
|
1929
|
-
* )
|
2059
|
+
* });
|
1930
2060
|
* });
|
1931
2061
|
*
|
1932
2062
|
* </pre>
|
1933
|
-
*
|
2063
|
+
*
|
1934
2064
|
* @param {...Function} fns any number of functions which will be injected using the injector.
|
1935
2065
|
*/
|
1936
2066
|
window.inject = angular.mock.inject = function() {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.0-rc.
|
2
|
+
* @license AngularJS v1.2.0-rc.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -16,7 +16,7 @@ var $resourceMinErr = angular.$$minErr('$resource');
|
|
16
16
|
*
|
17
17
|
* `ngResource` is the name of the optional Angular module that adds support for interacting with
|
18
18
|
* [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
|
19
|
-
* `
|
19
|
+
* `ngResource` provides the {@link ngResource.$resource `$resource`} service.
|
20
20
|
*
|
21
21
|
* {@installModule resource}
|
22
22
|
*
|
@@ -94,7 +94,7 @@ var $resourceMinErr = angular.$$minErr('$resource');
|
|
94
94
|
* caching.
|
95
95
|
* - **`timeout`** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} that
|
96
96
|
* should abort the request when resolved.
|
97
|
-
* - **`withCredentials`** - `{boolean}` - whether to
|
97
|
+
* - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
|
98
98
|
* XHR object. See {@link https://developer.mozilla.org/en/http_access_control#section_5
|
99
99
|
* requests with credentials} for more information.
|
100
100
|
* - **`responseType`** - `{string}` - see {@link
|
@@ -352,6 +352,9 @@ angular.module('ngResource', ['ng']).
|
|
352
352
|
|
353
353
|
var urlParams = self.urlParams = {};
|
354
354
|
forEach(url.split(/\W/), function(param){
|
355
|
+
if (param === 'hasOwnProperty') {
|
356
|
+
throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
|
357
|
+
}
|
355
358
|
if (!(new RegExp("^\\d+$").test(param)) && param && (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
|
356
359
|
urlParams[param] = true;
|
357
360
|
}
|
@@ -471,7 +474,7 @@ angular.module('ngResource', ['ng']).
|
|
471
474
|
}
|
472
475
|
});
|
473
476
|
|
474
|
-
httpConfig.data = data;
|
477
|
+
if (hasBody) httpConfig.data = data;
|
475
478
|
route.setUrlParams(httpConfig, extend({}, extractParams(data, action.params || {}), params), action.url);
|
476
479
|
|
477
480
|
var promise = $http(httpConfig).then(function(response) {
|
@@ -497,8 +500,6 @@ angular.module('ngResource', ['ng']).
|
|
497
500
|
|
498
501
|
value.$resolved = true;
|
499
502
|
|
500
|
-
(success||noop)(value, response.headers);
|
501
|
-
|
502
503
|
response.resource = value;
|
503
504
|
|
504
505
|
return response;
|
@@ -508,8 +509,15 @@ angular.module('ngResource', ['ng']).
|
|
508
509
|
(error||noop)(response);
|
509
510
|
|
510
511
|
return $q.reject(response);
|
511
|
-
})
|
512
|
+
});
|
512
513
|
|
514
|
+
promise = promise.then(
|
515
|
+
function(response) {
|
516
|
+
var value = responseInterceptor(response);
|
517
|
+
(success||noop)(value, response.headers);
|
518
|
+
return value;
|
519
|
+
},
|
520
|
+
responseErrorInterceptor);
|
513
521
|
|
514
522
|
if (!isInstanceCall) {
|
515
523
|
// we are creating instance / collection
|
@@ -1,26 +1,10 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.0-rc.
|
2
|
+
* @license AngularJS v1.2.0-rc.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
6
6
|
(function(window, angular, undefined) {'use strict';
|
7
7
|
|
8
|
-
var copy = angular.copy,
|
9
|
-
equals = angular.equals,
|
10
|
-
extend = angular.extend,
|
11
|
-
forEach = angular.forEach,
|
12
|
-
isDefined = angular.isDefined,
|
13
|
-
isFunction = angular.isFunction,
|
14
|
-
isString = angular.isString,
|
15
|
-
jqLite = angular.element,
|
16
|
-
noop = angular.noop,
|
17
|
-
toJson = angular.toJson;
|
18
|
-
|
19
|
-
|
20
|
-
function inherit(parent, extra) {
|
21
|
-
return extend(new (extend(function() {}, {prototype:parent}))(), extra);
|
22
|
-
}
|
23
|
-
|
24
8
|
/**
|
25
9
|
* @ngdoc overview
|
26
10
|
* @name ngRoute
|
@@ -49,6 +33,10 @@ var ngRouteModule = angular.module('ngRoute', ['ng']).
|
|
49
33
|
* Requires the {@link ngRoute `ngRoute`} module to be installed.
|
50
34
|
*/
|
51
35
|
function $RouteProvider(){
|
36
|
+
function inherit(parent, extra) {
|
37
|
+
return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra);
|
38
|
+
}
|
39
|
+
|
52
40
|
var routes = {};
|
53
41
|
|
54
42
|
/**
|
@@ -130,8 +118,8 @@ function $RouteProvider(){
|
|
130
118
|
* The custom `redirectTo` function is expected to return a string which will be used
|
131
119
|
* to update `$location.path()` and `$location.search()`.
|
132
120
|
*
|
133
|
-
* - `[reloadOnSearch=true]` - {boolean=} - reload route when only
|
134
|
-
*
|
121
|
+
* - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()`
|
122
|
+
* or `$location.hash()` changes.
|
135
123
|
*
|
136
124
|
* If the option is set to `false` and url in the browser changes, then
|
137
125
|
* `$routeUpdate` event is broadcasted on the root scope.
|
@@ -147,7 +135,7 @@ function $RouteProvider(){
|
|
147
135
|
* Adds a new route definition to the `$route` service.
|
148
136
|
*/
|
149
137
|
this.when = function(path, route) {
|
150
|
-
routes[path] = extend(
|
138
|
+
routes[path] = angular.extend(
|
151
139
|
{reloadOnSearch: true},
|
152
140
|
route,
|
153
141
|
path && pathRegExp(path, route)
|
@@ -159,7 +147,7 @@ function $RouteProvider(){
|
|
159
147
|
? path.substr(0, path.length-1)
|
160
148
|
: path +'/';
|
161
149
|
|
162
|
-
routes[redirectPath] = extend(
|
150
|
+
routes[redirectPath] = angular.extend(
|
163
151
|
{redirectTo: path},
|
164
152
|
pathRegExp(redirectPath, route)
|
165
153
|
);
|
@@ -198,7 +186,9 @@ function $RouteProvider(){
|
|
198
186
|
+ (optional ? '' : slash)
|
199
187
|
+ '(?:'
|
200
188
|
+ (optional ? slash : '')
|
201
|
-
+ (star && '(
|
189
|
+
+ (star && '(.+?)' || '([^/]+)')
|
190
|
+
+ (optional || '')
|
191
|
+
+ ')'
|
202
192
|
+ (optional || '');
|
203
193
|
})
|
204
194
|
.replace(/([\/$\*])/g, '\\$1');
|
@@ -367,6 +357,7 @@ function $RouteProvider(){
|
|
367
357
|
* defined in `resolve` route property. Once all of the dependencies are resolved
|
368
358
|
* `$routeChangeSuccess` is fired.
|
369
359
|
*
|
360
|
+
* @param {Object} angularEvent Synthetic event object.
|
370
361
|
* @param {Route} next Future route information.
|
371
362
|
* @param {Route} current Current route information.
|
372
363
|
*/
|
@@ -394,6 +385,7 @@ function $RouteProvider(){
|
|
394
385
|
* @description
|
395
386
|
* Broadcasted if any of the resolve promises are rejected.
|
396
387
|
*
|
388
|
+
* @param {Object} angularEvent Synthetic event object
|
397
389
|
* @param {Route} current Current route information.
|
398
390
|
* @param {Route} previous Previous route information.
|
399
391
|
* @param {Route} rejection Rejection of the promise. Usually the error of the failed promise.
|
@@ -477,9 +469,9 @@ function $RouteProvider(){
|
|
477
469
|
last = $route.current;
|
478
470
|
|
479
471
|
if (next && last && next.$$route === last.$$route
|
480
|
-
&& equals(next.pathParams, last.pathParams) && !next.reloadOnSearch && !forceReload) {
|
472
|
+
&& angular.equals(next.pathParams, last.pathParams) && !next.reloadOnSearch && !forceReload) {
|
481
473
|
last.params = next.params;
|
482
|
-
copy(last.params, $routeParams);
|
474
|
+
angular.copy(last.params, $routeParams);
|
483
475
|
$rootScope.$broadcast('$routeUpdate', last);
|
484
476
|
} else if (next || last) {
|
485
477
|
forceReload = false;
|
@@ -487,7 +479,7 @@ function $RouteProvider(){
|
|
487
479
|
$route.current = next;
|
488
480
|
if (next) {
|
489
481
|
if (next.redirectTo) {
|
490
|
-
if (isString(next.redirectTo)) {
|
482
|
+
if (angular.isString(next.redirectTo)) {
|
491
483
|
$location.path(interpolate(next.redirectTo, next.params)).search(next.params)
|
492
484
|
.replace();
|
493
485
|
} else {
|
@@ -500,29 +492,29 @@ function $RouteProvider(){
|
|
500
492
|
$q.when(next).
|
501
493
|
then(function() {
|
502
494
|
if (next) {
|
503
|
-
var locals = extend({}, next.resolve),
|
495
|
+
var locals = angular.extend({}, next.resolve),
|
504
496
|
template, templateUrl;
|
505
497
|
|
506
|
-
forEach(locals, function(value, key) {
|
507
|
-
locals[key] = isString(value) ? $injector.get(value) : $injector.invoke(value);
|
498
|
+
angular.forEach(locals, function(value, key) {
|
499
|
+
locals[key] = angular.isString(value) ? $injector.get(value) : $injector.invoke(value);
|
508
500
|
});
|
509
501
|
|
510
|
-
if (isDefined(template = next.template)) {
|
511
|
-
if (isFunction(template)) {
|
502
|
+
if (angular.isDefined(template = next.template)) {
|
503
|
+
if (angular.isFunction(template)) {
|
512
504
|
template = template(next.params);
|
513
505
|
}
|
514
|
-
} else if (isDefined(templateUrl = next.templateUrl)) {
|
515
|
-
if (isFunction(templateUrl)) {
|
506
|
+
} else if (angular.isDefined(templateUrl = next.templateUrl)) {
|
507
|
+
if (angular.isFunction(templateUrl)) {
|
516
508
|
templateUrl = templateUrl(next.params);
|
517
509
|
}
|
518
510
|
templateUrl = $sce.getTrustedResourceUrl(templateUrl);
|
519
|
-
if (isDefined(templateUrl)) {
|
511
|
+
if (angular.isDefined(templateUrl)) {
|
520
512
|
next.loadedTemplateUrl = templateUrl;
|
521
513
|
template = $http.get(templateUrl, {cache: $templateCache}).
|
522
514
|
then(function(response) { return response.data; });
|
523
515
|
}
|
524
516
|
}
|
525
|
-
if (isDefined(template)) {
|
517
|
+
if (angular.isDefined(template)) {
|
526
518
|
locals['$template'] = template;
|
527
519
|
}
|
528
520
|
return $q.all(locals);
|
@@ -533,7 +525,7 @@ function $RouteProvider(){
|
|
533
525
|
if (next == $route.current) {
|
534
526
|
if (next) {
|
535
527
|
next.locals = locals;
|
536
|
-
copy(next.params, $routeParams);
|
528
|
+
angular.copy(next.params, $routeParams);
|
537
529
|
}
|
538
530
|
$rootScope.$broadcast('$routeChangeSuccess', next, last);
|
539
531
|
}
|
@@ -552,10 +544,10 @@ function $RouteProvider(){
|
|
552
544
|
function parseRoute() {
|
553
545
|
// Match a route
|
554
546
|
var params, match;
|
555
|
-
forEach(routes, function(route, path) {
|
547
|
+
angular.forEach(routes, function(route, path) {
|
556
548
|
if (!match && (params = switchRouteMatcher($location.path(), route))) {
|
557
549
|
match = inherit(route, {
|
558
|
-
params: extend({}, $location.search(), params),
|
550
|
+
params: angular.extend({}, $location.search(), params),
|
559
551
|
pathParams: params});
|
560
552
|
match.$$route = route;
|
561
553
|
}
|
@@ -569,7 +561,7 @@ function $RouteProvider(){
|
|
569
561
|
*/
|
570
562
|
function interpolate(string, params) {
|
571
563
|
var result = [];
|
572
|
-
forEach((string||'').split(':'), function(segment, i) {
|
564
|
+
angular.forEach((string||'').split(':'), function(segment, i) {
|
573
565
|
if (i === 0) {
|
574
566
|
result.push(segment);
|
575
567
|
} else {
|
@@ -648,6 +640,7 @@ ngRouteModule.directive('ngView', ngViewFactory);
|
|
648
640
|
* The enter and leave animation occur concurrently.
|
649
641
|
*
|
650
642
|
* @scope
|
643
|
+
* @priority 400
|
651
644
|
* @example
|
652
645
|
<example module="ngViewExample" deps="angular-route.js" animations="true">
|
653
646
|
<file name="index.html">
|
@@ -801,7 +794,7 @@ function ngViewFactory( $route, $anchorScroll, $compile, $controller,
|
|
801
794
|
return {
|
802
795
|
restrict: 'ECA',
|
803
796
|
terminal: true,
|
804
|
-
priority:
|
797
|
+
priority: 400,
|
805
798
|
transclude: 'element',
|
806
799
|
compile: function(element, attr, linker) {
|
807
800
|
return function(scope, $element, attr) {
|
@@ -848,7 +841,7 @@ function ngViewFactory( $route, $anchorScroll, $compile, $controller,
|
|
848
841
|
currentScope[current.controllerAs] = controller;
|
849
842
|
}
|
850
843
|
clone.data('$ngControllerController', controller);
|
851
|
-
clone.
|
844
|
+
clone.children().data('$ngControllerController', controller);
|
852
845
|
}
|
853
846
|
|
854
847
|
link(currentScope);
|