aboutsummaryrefslogtreecommitdiffstats
path: root/src/service/route.js
diff options
context:
space:
mode:
authorVojta Jina2011-11-29 21:51:59 -0800
committerVojta Jina2012-01-23 11:05:36 -0800
commit992c790f0786fa45c1cc3710f29bf49c7c322ba7 (patch)
tree581d06ea9ba275a14d5891d83b2df03f9930bd45 /src/service/route.js
parentf5343c9fd3c7cd0fefdb4d71d2b579dbae998d6a (diff)
downloadangular.js-992c790f0786fa45c1cc3710f29bf49c7c322ba7.tar.bz2
refactor(scope): separate controller from scope
Controller is standalone object, created using "new" operator, not messed up with scope anymore. Instead, related scope is injected as $scope. See design proposal: https://docs.google.com/document/pub?id=1SsgVj17ec6tnZEX3ugsvg0rVVR11wTso5Md-RdEmC0k Closes #321 Closes #425 Breaks controller methods are not exported to scope automatically Breaks Scope#$new() does not take controller as argument anymore
Diffstat (limited to 'src/service/route.js')
-rw-r--r--src/service/route.js10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/service/route.js b/src/service/route.js
index 77d94e9c..04bcfdb6 100644
--- a/src/service/route.js
+++ b/src/service/route.js
@@ -63,8 +63,8 @@
</doc:example>
*/
function $RouteProvider(){
- this.$get = ['$rootScope', '$location', '$routeParams',
- function( $rootScope, $location, $routeParams) {
+ this.$get = ['$rootScope', '$location', '$routeParams', '$injector',
+ function( $rootScope, $location, $routeParams, $injector) {
/**
* @ngdoc event
* @name angular.module.ng.$route#$beforeRouteChange
@@ -278,8 +278,10 @@ function $RouteProvider(){
}
} else {
copy(next.params, $routeParams);
- (Controller = next.controller) && inferInjectionArgs(Controller);
- next.scope = parentScope.$new(Controller);
+ next.scope = parentScope.$new();
+ if (next.controller) {
+ $injector.instantiate(next.controller, {$scope: next.scope});
+ }
}
}
$rootScope.$broadcast('$afterRouteChange', next, last);