diff --git a/src/ng/controller.js b/src/ng/controller.js index 389f869c9888..8cc077960e2f 100644 --- a/src/ng/controller.js +++ b/src/ng/controller.js @@ -27,6 +27,15 @@ function $ControllerProvider() { var controllers = {}, globals = false; + /** + * @ngdoc method + * @name $controllerProvider#has + * @param {string} name Controller name to check. + */ + this.has = function(name) { + return controllers.hasOwnProperty(name); + }; + /** * @ngdoc method * @name $controllerProvider#register diff --git a/test/ng/controllerSpec.js b/test/ng/controllerSpec.js index 253623d05a42..4c7d2d547f43 100644 --- a/test/ng/controllerSpec.js +++ b/test/ng/controllerSpec.js @@ -57,6 +57,21 @@ describe('$controller', function() { expect(ctrl instanceof BarCtrl).toBe(true); }); + it('should return true when having an existing controller, should return false otherwise', function() { + $controllerProvider.register('FooCtrl', noop); + $controllerProvider.register('BarCtrl', ['dep1', 'dep2', noop]); + $controllerProvider.register({ + 'BazCtrl': noop, + 'QuxCtrl': ['dep1', 'dep2', noop] + }); + + expect($controllerProvider.has('FooCtrl')).toBe(true); + expect($controllerProvider.has('BarCtrl')).toBe(true); + expect($controllerProvider.has('BazCtrl')).toBe(true); + expect($controllerProvider.has('QuxCtrl')).toBe(true); + + expect($controllerProvider.has('UnknownCtrl')).toBe(false); + }); it('should allow registration of controllers annotated with arrays', function() { var FooCtrl = function($scope) { $scope.foo = 'bar'; },