aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/directive/ngView.js3
-rw-r--r--test/directive/ngViewSpec.js29
2 files changed, 31 insertions, 1 deletions
diff --git a/src/directive/ngView.js b/src/directive/ngView.js
index d5b24bcb..95b1546d 100644
--- a/src/directive/ngView.js
+++ b/src/directive/ngView.js
@@ -149,7 +149,8 @@ var ngViewDirective = ['$http', '$templateCache', '$route', '$anchorScroll', '$c
lastScope = current.scope = scope.$new();
if (current.controller) {
- $controller(current.controller, {$scope: lastScope});
+ element.contents().
+ data('$ngControllerController', $controller(current.controller, {$scope: lastScope}));
}
link(lastScope);
diff --git a/test/directive/ngViewSpec.js b/test/directive/ngViewSpec.js
index bf3706ac..52aefa3a 100644
--- a/test/directive/ngViewSpec.js
+++ b/test/directive/ngViewSpec.js
@@ -408,4 +408,33 @@ describe('ng-view', function() {
expect($rootScope.load).toHaveBeenCalledOnce();
});
})
+
+
+ it('should set $scope and $controllerController on the view', function() {
+ function MyCtrl($scope) {
+ $scope.state = 'WORKS';
+ $scope.ctrl = this;
+ }
+
+ module(function($routeProvider) {
+ $routeProvider.when('/foo', {template: 'tpl.html', controller: MyCtrl});
+ });
+
+ inject(function($templateCache, $location, $rootScope, $route) {
+ $templateCache.put('tpl.html', [200, '<div>{{state}}</div>', {}]);
+
+ $location.url('/foo');
+ $rootScope.$digest();
+ expect(element.text()).toEqual('WORKS');
+
+ var div = element.find('div');
+ expect(nodeName_(div.parent())).toEqual('NG:VIEW');
+
+ expect(div.scope()).toBe($route.current.scope);
+ expect(div.scope().hasOwnProperty('state')).toBe(true);
+ expect(div.scope().state).toEqual('WORKS');
+
+ expect(div.controller()).toBe($route.current.scope.ctrl);
+ });
+ });
});