Как увеличить модал ширина в угловой пользовательский интерфейс начальной загрузки?
Я создаю модальное:
var modal = $modal.open({
templateUrl: "/partials/welcome",
controller: "welcomeCtrl",
backdrop: "static",
scope: $scope,
});
есть ли способ увеличить его ширину?
10 ответов:
Я использую класс css, например, для таргетинга класса modal-dialog:
.app-modal-window .modal-dialog { width: 500px; }
затем в контроллере, вызывающем модальное окно, установите windowClass:
$scope.modalButtonClick = function () { var modalInstance = $modal.open({ templateUrl: 'App/Views/modalView.html', controller: 'modalController', windowClass: 'app-modal-window' }); modalInstance.result.then( //close function (result) { var a = result; }, //dismiss function (result) { var a = result; }); };
еще один простой способ-использовать 2 готовых размеров и передавать их в качестве параметра при вызове функции в HTML. использовать: "lg" для больших модалов с шириной 900px 'см' для малых модальные глаголы с шириной 300 пикселей или передав параметр используется стандартный размер которой 600 пикселей.
пример кода:
$scope.openModal = function (size) { var modal = $modal.open({ templateUrl: "/partials/welcome", controller: "welcomeCtrl", backdrop: "static", scope: $scope, size: size, }); modal.result.then( //close function (result) { var a = result; }, //dismiss function (result) { var a = result; }); };
и в html я бы использовал что-то вроде следующего:
<button ng-click="openModal('lg')">open Modal</button>
вы можете указать пользовательскую ширину для .modal-lg class специально для вашего всплывающего окна для более широкого разрешения видового экрана. Вот как это сделать:
CSS:
@media (min-width: 1400px){ .my-modal-popup .modal-lg { width: 1308px; } }
JS:
var modal = $modal.open({ animation: true, templateUrl: 'modalTemplate.html', controller: 'modalController', size: 'lg', windowClass: 'my-modal-popup' });
когда мы открываем модальный он принимает размер как paramenter:
возможные значения для него размер:
sm, md, lg
$scope.openModal = function (size) { var modal = $modal.open({ size: size, templateUrl: "/app/user/welcome.html", ...... }); }
HTML:
<button type="button" class="btn btn-default" ng-click="openModal('sm')">Small Modal</button> <button type="button" class="btn btn-default" ng-click="openModal('md')">Medium Modal</button> <button type="button" class="btn btn-default" ng-click="openModal('lg')">Large Modal</button>
если вы хотите какой-либо конкретный размер, добавьте стиль на модель HTML:
<style>.modal-dialog {width: 500px;} </style>
есть еще один способ, который вам не нужно перезаписывать классы uibModal и использовать их при необходимости : вы вызываете $uibModal.откройте функцию с вашим собственным типом размера, как "xlg", а затем вы определяете класс с именем" modal-xlg", как показано ниже :
.modal-xlg{ width:1200px; }
вызов $uibModal.открыть как :
var modalInstance = $uibModal.open({ ... size: "xlg", });
и это будет работать . потому что любая строка, которую вы передаете как загрузчик размера, будет сочетать ее с" modal -", и это будет играть роль класса для окна.
мне было проще просто взять на себя шаблон из Bootstrap-ui. Я оставил прокомментированный HTML все еще на месте, чтобы показать, что я изменил.
перезаписать их шаблон по умолчанию:
<script type="text/ng-template" id="myDlgTemplateWrapper.html"> <div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{'z-index': 1050 + index*10, display: 'block'}" ng-click="close($event)"> <!-- <div class="modal-dialog" ng-class="{'modal-sm': size == 'sm', 'modal-lg': size == 'lg'}" > <div class="modal-content" modal-transclude></div> </div>--> <div modal-transclude> <!-- Your content goes here --> </div> </div> </script>
измените шаблон диалога (обратите внимание на обертку DIVs, содержащую класс" modal-dialog "и класс" modal-content"):
<script type="text/ng-template" id="myModalContent.html"> <div class="modal-dialog {{extraDlgClass}}" style="width: {{width}}; max-width: {{maxWidth}}; min-width: {{minWidth}}; "> <div class="modal-content"> <div class="modal-header bg-primary"> <h3>I am a more flexible modal!</h3> </div> <div class="modal-body" style="min-height: {{minHeight}}; height: {{height}}; max-height {{maxHeight}}; "> <p>Make me any size you want</p> </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> </div> </div> </script>
а затем вызовите модальный с любым CSS-классом или параметрами стиля, которые вы хотите изменить (предполагая, что вы уже определили " приложение" где-то еще):
<script type="text/javascript"> app.controller("myTest", ["$scope", "$modal", function ($scope, $modal) { // Adjust these with your parameters as needed $scope.extraDlgClass = undefined; $scope.width = "70%"; $scope.height = "200px"; $scope.maxWidth = undefined; $scope.maxHeight = undefined; $scope.minWidth = undefined; $scope.minHeight = undefined; $scope.open = function () { $scope.modalInstance = $modal.open( { backdrop: 'static', keyboard: false, modalFade: true, templateUrl: "myModalContent.html", windowTemplateUrl: "myDlgTemplateWrapper.html", scope: $scope, //size: size, - overwritten by the extraDlgClass below (use 'modal-lg' or 'modal-sm' if desired) extraDlgClass: $scope.extraDlgClass, width: $scope.width, height: $scope.height, maxWidth: $scope.maxWidth, maxHeight: $scope.maxHeight, minWidth: $scope.minWidth, minHeight: $scope.minHeight }); $scope.modalInstance.result.then(function () { console.log('Modal closed at: ' + new Date()); }, function () { console.log('Modal dismissed at: ' + new Date()); }); }; $scope.ok = function ($event) { if ($event) $event.preventDefault(); $scope.modalInstance.close("OK"); }; $scope.cancel = function ($event) { if ($event) $event.preventDefault(); $scope.modalInstance.dismiss('cancel'); }; $scope.openFlexModal = function () { $scope.open(); } }]); </script>
добавить кнопку "Открыть" и жарь.
<button ng-controller="myTest" class="btn btn-default" type="button" ng-click="openFlexModal();">Open Flex Modal!</button>
теперь вы можете добавить любой дополнительный класс, который вы хотите, или просто изменить ширину/высоту размеров по мере необходимости.
Я далее заключил его в директиву обертки, которая должна быть тривиальной с этого момента.
ваше здоровье.
Я решил проблему, используя Решение Дмитрия Комина, но с другим синтаксисом CSS, чтобы он работал непосредственно в браузере.
CSS
@media(min-width: 1400px){ .my-modal > .modal-lg { width: 1308px; } }
JS то же самое:
var modal = $modal.open({ animation: true, templateUrl: 'modalTemplate.html', controller: 'modalController', size: 'lg', windowClass: 'my-modal' });
Вы можете сделать это очень простым способом, используя свойство размера углового модальный.
var modal = $modal.open({ templateUrl: "/partials/welcome", controller: "welcomeCtrl", backdrop: "static", scope: $scope, size:'lg' // you can try different width like 'sm', 'md' });
Если вы хотите просто пойти с большим размером по умолчанию, вы можете добавить "modal-lg":
var modal = $modal.open({ templateUrl: "/partials/welcome", controller: "welcomeCtrl", backdrop: "static", scope: $scope, windowClass: 'modal-lg' });
используйте max-width на модальном диалоге для углового 5
.mod-class .modal-dialog { max-width: 1000px; }
и использовать windowClass, как рекомендуют другие, TS например:
this.modalService.open(content, { windowClass: 'mod-class' }).result.then( (result) => { // this.closeResult = `Closed with: ${result}`; }, (reason) => { // this.closeResult = `Dismissed ${this.getDismissReason(reason)}`; });
кроме того, мне пришлось поместить код css в глобальные стили > стили.стиль CSS.