aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMisko Hevery2012-03-15 13:41:06 -0700
committerMisko Hevery2012-03-19 11:35:09 -0700
commit21e74c2d2e8e985b23711785287feb59965cbd90 (patch)
treef795363c0183df399c655b42ffd81b806e4e6c06
parent6c5a05ad49a1e083570c3dfe331403398f899dbe (diff)
downloadangular.js-21e74c2d2e8e985b23711785287feb59965cbd90.tar.bz2
fix(ngView): controller not published
corrected omitted assignment of controller to the element data object. Without this fix the controller created by ngView is not accessible from the browser debugger.
-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);
+ });
+ });
});