Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit fc83923

Browse files
committed
bug(ngRoute): allow proto inherited properties in route params object
copy route params with angular.copy before using angular.extend which looks only for enumerable own properties Closes #8181
1 parent 9bc1f1b commit fc83923

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/ngRoute/route.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,13 @@ function $RouteProvider(){
141141
* Adds a new route definition to the `$route` service.
142142
*/
143143
this.when = function(path, route) {
144+
var routeCopy = angular.copy(route);
145+
if (angular.isUndefined(routeCopy.reloadOnSearch)) {
146+
routeCopy.reloadOnSearch = true;
147+
}
144148
routes[path] = angular.extend(
145-
{reloadOnSearch: true},
146-
route,
147-
path && pathRegExp(path, route)
149+
routeCopy,
150+
path && pathRegExp(path, routeCopy)
148151
);
149152

150153
// create redirection for trailing slashes
@@ -155,7 +158,7 @@ function $RouteProvider(){
155158

156159
routes[redirectPath] = angular.extend(
157160
{redirectTo: path},
158-
pathRegExp(redirectPath, route)
161+
pathRegExp(redirectPath, routeCopy)
159162
);
160163
}
161164

test/ngRoute/routeSpec.js

+16
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,22 @@ describe('$route', function() {
294294
$rootScope.$digest();
295295
expect($route.current).toBeDefined();
296296
}));
297+
298+
it("should redirect when route params are inherited prototypically", function() {
299+
module(function($routeProvider) {
300+
var BaseRoute = function BaseRoute() {
301+
BaseRoute.prototype.templateUrl = 'foo.html';
302+
};
303+
var route = new BaseRoute();
304+
$routeProvider.when('/foo', route);
305+
});
306+
307+
inject(function($route, $location, $rootScope) {
308+
$location.path('/foo');
309+
$rootScope.$digest();
310+
expect($route.current.templateUrl).toBe('foo.html');
311+
});
312+
});
297313
});
298314

299315

0 commit comments

Comments
 (0)