aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/controller.js6
-rw-r--r--test/ng/controllerSpec.js22
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 = {},