mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-21 00:40:24 +00:00
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.
This commit is contained in:
parent
6c5a05ad49
commit
21e74c2d2e
2 changed files with 31 additions and 1 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue