Yes, you can!
$ uibModal is a super flexible tool.
I am not very familiar with Typescript, but here is my JS solution:
angular .module('appName', ['ui.bootstrap']) .controller('SomePageController', ['$scope', '$uibModal', '$log', function ($scope, $uibModal, $log) {
First you want to change the way openModalPopup () is :
// Instantiate the modal window var modalPopup = function () { return $scope.modalInstance = $uibModal.open({ templateUrl: 'blocks/modal/dialog.html', scope: $scope }); }; // Modal window popup trigger $scope.openModalPopup = function () { modalPopup().result .then(function (data) { $scope.handleSuccess(data); }) .then(null, function (reason) { $scope.handleDismiss(reason); }); }; // Close the modal if Yes button click $scope.yes = function () { $scope.modalInstance.close('Yes Button Clicked') }; // Dismiss the modal if No button click $scope.no = function () { $scope.modalInstance.dismiss('No Button Clicked') }; // Log Success message $scope.handleSuccess = function (data) { $log.info('Modal closed: ' + data); }; // Log Dismiss message $scope.handleDismiss = function (reason) { $log.info('Modal dismissed: ' + reason); } } ]);
Second - the modal window HTML template will look like this:
<script type="text/ng-template" id="blocks/modal/dialog.html"> <div class="modal-header"> <h3 class="modal-title">I'm a modal!</h3> </div> <div class="modal-body"> Modal content </div> <div class="modal-footer"> <button class="btn btn-primary" type="button" ng-click="yes()">Yes</button> <button class="btn btn-warning" type="button" ng-click="no()">No</button> </div> </script>
The third is the fairly simple SomePage HTML (in your case, the Questionnaire ) Example :
<div ng-controller="SomePageController"> <button type="button" class="btn btn-default" ng-click="openModalPopup()">Open modal</button> </div>
Together:
angular .module('appName', ['ui.bootstrap']) .controller('SomePageController', ['$scope', '$uibModal', '$log', function($scope, $uibModal, $log) { $scope.modalPopup = function() { modal = $uibModal.open({ templateUrl: 'blocks/modal/dialog.html', scope: $scope }); $scope.modalInstance = modal; return modal.result }; $scope.modalPopupTrigger = function() { $scope.modalPopup() .then(function(data) { $scope.handleSuccess(data); },function(reason) { $scope.handleDismiss(reason); }); }; $scope.yes = function() { $scope.modalInstance.close('Yes Button Clicked') }; $scope.no = function() { $scope.modalInstance.dismiss('No Button Clicked') }; $scope.handleSuccess = function(data) { $log.info('Modal closed: ' + data); }; $scope.handleDismiss = function(reason) { $log.info('Modal dismissed: ' + reason); } } ]);
<!DOCTYPE html> <html> <head> <link href="https://netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> </head> <body ng-app="appName"> <div ng-controller="SomePageController"> <script type="text/ng-template" id="blocks/modal/dialog.html"> <div class="modal-header"> <h3 class="modal-title">I'm a modal!</h3> </div> <div class="modal-body"> Modal content </div> <div class="modal-footer"> <button class="btn btn-primary" type="button" ng-click="yes()">Yes</button> <button class="btn btn-warning" type="button" ng-click="no()">No</button> </div> </script> <button type="button" class="btn btn-default" ng-click="modalPopupTrigger()">Open modal</button> </div> <script src="https://code.angularjs.org/1.5.7/angular.min.js"></script> <script src="https://code.angularjs.org/1.5.7/angular-animate.min.js"></script> <script src="https://raw.githubusercontent.com/angular-ui/bootstrap-bower/master/ui-bootstrap-tpls.min.js"></script> </body> </html>
source share