$uibModal
is a service provided by the UI Bootstrap library for AngularJS (1.x) that helps you create modals (dialogs or pop-ups) in your application. To use $uibModal
, follow these steps:
- Install and include UI Bootstrap:
First, you need to install the UI Bootstrap library and its dependencies. You can either download it from the official website (https://angular-ui.github.io/bootstrap/) or use a CDN like the following:
HTML code
<!-- AngularJS and UI Bootstrap styles -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-csp.css">
<!-- AngularJS and UI Bootstrap scripts -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.min.js"></script>
- Create an AngularJS module and controller:
Create a new AngularJS module and controller. Add the ui.bootstrap
dependency to your module:
JS code
angular.module('app', ['ui.bootstrap'])
.controller('MainController', function($scope, $uibModal) {
// Your main controller logic here
});
- Create the modal template:
Create an HTML file (e.g., modalTemplate.html
) that will be used as the modal’s content:
html code
<div class="modal-header">
<h3 class="modal-title">Modal Title</h3>
</div>
<div class="modal-body">
This is the modal content.
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="$ctrl.ok()">OK</button>
<button class="btn btn-warning" ng-click="$ctrl.cancel()">Cancel</button>
</div>
- Create the modal controller:
Create a new AngularJS controller that will handle the modal’s logic:
JS Code
angular.module('app')
.controller('ModalController', function($uibModalInstance) {
var $ctrl = this;
$ctrl.ok = function() {
$uibModalInstance.close('ok');
};
$ctrl.cancel = function() {
$uibModalInstance.dismiss('cancel');
};
});
- Open the modal:
In your main controller, create a function that opens the modal using $uibModal.open()
:
JS Code
$scope.openModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'modalTemplate.html',
controller: 'ModalController',
controllerAs: '$ctrl'
});
modalInstance.result.then(
function(result) {
console.log('Modal closed with:', result);
},
function(reason) {
console.log('Modal dismissed with:', reason);
}
);
};
- Add a button to open the modal:
Finally, add a button to your HTML that calls the openModal()
function:
html code
<body ng-controller="MainController">
<button ng-click="openModal()">Open Modal</button>
</body>
Now, when you click the “Open Modal” button, a modal will appear with the content and behavior defined in modalTemplate.html
and ModalController
. You can further customize the modal’s appearance, size, and other options by modifying the $uibModal.open()
configuration.
Complete example
Here it is:
index.html
– Main HTML file:
<!DOCTYPE html>
<html ng-app="app">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-csp.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/2.5.0/ui-bootstrap-tpls.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainController">
<button ng-click="openModal()">Open Modal</button>
</body>
</html>
app.js
– Main JavaScript file:
angular.module('app', ['ui.bootstrap'])
.controller('MainController', function($scope, $uibModal) {
$scope.openModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'modalTemplate.html',
controller: 'ModalController',
controllerAs: '$ctrl'
});
modalInstance.result.then(
function(result) {
console.log('Modal closed with:', result);
},
function(reason) {
console.log('Modal dismissed with:', reason);
}
);
};
})
.controller('ModalController', function($uibModalInstance) {
var $ctrl = this;
$ctrl.ok = function() {
$uibModalInstance.close('ok');
};
$ctrl.cancel = function() {
$uibModalInstance.dismiss('cancel');
};
});
modalTemplate.html
– Modal template:
<div class="modal-header">
<h3 class="modal-title">Modal Title</h3>
</div>
<div class="modal-body">
This is the modal content.
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="$ctrl.ok()">OK</button>
<button class="btn btn-warning" ng-click="$ctrl.cancel()">Cancel</button>
</div>
This example demonstrates how to create and use a modal using $uibModal
in AngularJS with the UI Bootstrap library. When you click the “Open Modal” button, a modal with the content from modalTemplate.html
will appear, and you can interact with it using the behavior defined in the ModalController
.