В AngularJS вы всегда должны избегать глобальных функций. Услуги были созданы для этой цели. Я также пользуюсь $uibModal
и устала писать одно и то же снова и снова.
Я сделал ModalService
, что позволило мне абстрагироваться от большого количества повторяющегося кода:
function ModalService() {
var ModalService = this;
ModalService.basicModal = function(options) {
var _options = options || {};
return $uibModal.open({
animation: angular.isDefined(_options.animation) ? _options.animation : true,
keyboard: angular.isDefined(_options.keyboard) ? _options.keyboard : true,
backdrop: _options.backdrop || 'static',
size: _options.size || 'sm',
templateUrl: _options.templateUrl || 'templates/modal-message.html', //default template in case user does not provide one
controller: _options.controller || ModalMessageCtrl, // a default controller in case user does not provide one
controllerAs: _options.controllerAs || 'vm',
resolve: options.resolve || {}
});
};
ModalService.simpleModal = function(options) {
...
};
}
Вы можете определить множество разновидностей модалов, которые можно легко вызвать из контроллера:
ModalService.basicModal();
ModalService.simpleModal();
// etc...
И все они могут принимать необязательные параметры для настройки модальности:
ModalService.basicModal({
size: 'lg'
});
ModalService.simpleModal({
templateUrl: "my-custom-template.html",
controller: function($scope) {
//some custom inline controller
}
}).result.then(function() { //do something });
// etc...