From 2136ca8af3db1ff4d770d7a4815f2cec00286e00 Mon Sep 17 00:00:00 2001 From: Brian Ford Date: Sat, 28 Mar 2015 02:26:20 -0700 Subject: [PATCH] fix(1.x): inject $scope into activate hook Closes #192 --- src/router-directive.es5.js | 2 +- test/router-viewport.es5.spec.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/router-directive.es5.js b/src/router-directive.es5.js index c82549f..232420f 100644 --- a/src/router-directive.es5.js +++ b/src/router-directive.es5.js @@ -177,7 +177,7 @@ function ngViewportDirective($animate, $injector, $q, $router) { return; } - newScope = scope.$new(); + instruction.locals.$scope = newScope = scope.$new(); myCtrl.$$router = instruction.router; myCtrl.$$template = instruction.template; var componentName = instruction.component; diff --git a/test/router-viewport.es5.spec.js b/test/router-viewport.es5.spec.js index bb0b300..20044c5 100644 --- a/test/router-viewport.es5.spec.js +++ b/test/router-viewport.es5.spec.js @@ -244,6 +244,25 @@ describe('ngViewport', function () { })); + it('should inject $scope into the activate hook of a controller', function () { + var spy = jasmine.createSpy('activate'); + spy.$inject = ['$scope']; + registerComponent('user', '', { + activate: spy + }); + + $router.config([ + { path: '/user/:name', component: 'user' } + ]); + compile('
'); + + $router.navigate('/user/brian'); + $rootScope.$digest(); + + expect(spy.calls.first().args[0].$root).toEqual($rootScope); + }); + + it('should run the deactivate hook of controllers', function () { var spy = jasmine.createSpy('deactivate'); registerComponent('deactivate', '', {