There were several errors in your plunk example:
The script loading order is very important:
<script data-require=" angular.js@1.4.x " src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js" data-semver="1.4.7"></script> <script src="app.module.js"></script> <script src="childController.js"></script> <script src="baseController.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-animate.js"></script> <script src="//angular-ui.imtqy.com/bootstrap/ui-bootstrap-tpls-0.14.3.js"></script>
This will not work, as app.module.js depends on angular -ui-bootstrap.js, and childController.js depends on angular -animate.js, and childController.js depends on baseController.js. You need to load the scripts in the following order:
<script data-require=" angular.js@1.4.x " src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js" data-semver="1.4.7"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-animate.js"></script> <script src="//angular-ui.imtqy.com/bootstrap/ui-bootstrap-tpls-0.14.3.js"></script> <script src="app.module.js"></script> <script src="baseController.js"></script> <script src="childController.js"></script>
In childcontroller.js you have:
angular .module('app', ['ngAnimate'])
What is recreating and rewriting an application created in app.module.js. You must enter the ngAnimate module in your app.module.js as follows:
angular .module('app', ['ngAnimate', 'ui.bootstrap']);
You do not need a link to $ uibModalInstance in your base controller:
var modalInstance = $uibModal.open({ animation: self.animationsEnabled, templateUrl: 'help.html', controller: 'BaseController', size: size });
gives you access to the modal that you opened through "var modalInstance", which has closure and reject methods.