<!DOCTYPE html>
<html ng-app="myApp">

  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
    <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.10.0.js"></script>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <button class="btn btn-default" ng-click="open()">Open the Modal!</button>
    
    <overlay ng-if="showOverlay1" controller='Overlay1Ctrl' 
      title='Test Overlay 1' template-url='overlay1.html'></overlay>
    
  </body>

</html>
var app = angular.module("myApp", ['ui.bootstrap']);


app.controller('MainCtrl', function($scope) {
    
  $scope.showOverlay1 = false;
  
  $scope.open = function () {
    $scope.showOverlay1 = true;
  }

});


    
app.controller('Overlay1Ctrl', function($scope, $modalInstance, config) {
    
  $scope.templateUrl =  config.templateUrl;
  $scope.title = config.title;

  $scope.ok = function () {
    $modalInstance.close();
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
  
});

app.directive('overlay', function($modal) {

  return {
    restrict: "E",
    scope: {
      templateUrl:'@',
      controller: '@',
      title: '@'
    },
    link: function($scope) {
      
      var modalInstance = $modal.open({
        templateUrl: 'overlay.html',
        controller: $scope.controller,
        resolve: {
          config: function() {
            return {
              templateUrl: $scope.templateUrl,
              title: $scope.title
            }
          }
        }
        
      });
      
      modalInstance.result.then(function () {
        $log.info('Modal success at: ' + new Date());
      }, function () {
        $log.info('Modal dismissed at: ' + new Date());
      });
      
    }
    
  }
  
});
/* Styles go here */

<div class="modal-header">
    <h3>{{title}}</h3>
</div>
<div class="modal-body">
    <div ng-include='templateUrl'></div>
</div>
<div class="modal-footer">
    <button class="btn btn-primary" ng-click="ok()">OK</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>

<ul class="list-group">
  <li class="list-group-item">Cras justo odio</li>
  <li class="list-group-item">Dapibus ac facilisis in</li>
  <li class="list-group-item">Morbi leo risus</li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item">Vestibulum at eros</li>
</ul>