diff options
| -rw-r--r-- | src/ng/controller.js | 6 | ||||
| -rw-r--r-- | test/ng/controllerSpec.js | 22 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ng/controller.js b/src/ng/controller.js index fa90f8cd..67f70aad 100644 --- a/src/ng/controller.js +++ b/src/ng/controller.js @@ -23,7 +23,11 @@ function $ControllerProvider() { * annotations in the array notation). */ this.register = function(name, constructor) { - controllers[name] = constructor; + if (isObject(name)) { + extend(controllers, name) + } else { + controllers[name] = constructor; + } }; diff --git a/test/ng/controllerSpec.js b/test/ng/controllerSpec.js index 91389013..2abcace9 100644 --- a/test/ng/controllerSpec.js +++ b/test/ng/controllerSpec.js @@ -17,8 +17,8 @@ describe('$controller', function() { it('should allow registration of controllers', function() { var FooCtrl = function($scope) { $scope.foo = 'bar' }, - scope = {}, - ctrl; + scope = {}, + ctrl; $controllerProvider.register('FooCtrl', FooCtrl); ctrl = $controller('FooCtrl', {$scope: scope}); @@ -28,6 +28,24 @@ describe('$controller', function() { }); + it('should allow registration of map of controllers', function() { + var FooCtrl = function($scope) { $scope.foo = 'foo' }, + BarCtrl = function($scope) { $scope.bar = 'bar' }, + scope = {}, + ctrl; + + $controllerProvider.register({FooCtrl: FooCtrl, BarCtrl: BarCtrl} ); + + ctrl = $controller('FooCtrl', {$scope: scope}); + expect(scope.foo).toBe('foo'); + expect(ctrl instanceof FooCtrl).toBe(true); + + ctrl = $controller('BarCtrl', {$scope: scope}); + expect(scope.bar).toBe('bar'); + expect(ctrl instanceof BarCtrl).toBe(true); + }); + + it('should allow registration of controllers annotated with arrays', function() { var FooCtrl = function($scope) { $scope.foo = 'bar' }, scope = {}, |
