diff --git a/src/modal/modal.js b/src/modal/modal.js index d17377b826..1435087f11 100644 --- a/src/modal/modal.js +++ b/src/modal/modal.js @@ -354,7 +354,7 @@ angular.module('ui.bootstrap.modal', ['ui.bootstrap.transition']) modalScope.$close = modalInstance.close; modalScope.$dismiss = modalInstance.dismiss; - var ctrlLocals = {}; + var ctrlInstance, ctrlLocals = {}; var resolveIter = 1; //controllers @@ -365,7 +365,10 @@ angular.module('ui.bootstrap.modal', ['ui.bootstrap.transition']) ctrlLocals[key] = tplAndVars[resolveIter++]; }); - $controller(modalOptions.controllerAs ? modalOptions.controller + ' as ' + modalOptions.controllerAs : modalOptions.controller, ctrlLocals); + ctrlInstance = $controller(modalOptions.controller, ctrlLocals); + if (modalOptions.controller) { + modalScope[modalOptions.controllerAs] = ctrlInstance; + } } $modalStack.open(modalInstance, { diff --git a/src/modal/test/modal.spec.js b/src/modal/test/modal.spec.js index 3a9d33c1f4..d556b21f19 100644 --- a/src/modal/test/modal.spec.js +++ b/src/modal/test/modal.spec.js @@ -313,6 +313,14 @@ describe('$modal', function () { open({template: '
{{test.fromCtrl}} {{test.isModalInstance}}
', controller: 'TestCtrl', controllerAs: 'test'}); expect($document).toHaveModalOpenWithContent('Content from ctrl true', 'div'); }); + + it('should allow defining in-place controller-as controllers', function () { + open({template: '
{{test.fromCtrl}} {{test.isModalInstance}}
', controller: function($modalInstance) { + this.fromCtrl = 'Content from ctrl'; + this.isModalInstance = angular.isObject($modalInstance) && angular.isFunction($modalInstance.close); + }, controllerAs: 'test'}); + expect($document).toHaveModalOpenWithContent('Content from ctrl true', 'div'); + }); }); describe('resolve', function () {