Angalarjs模态框三种实现
来源:互联网 发布:端口攻击器 编辑:程序博客网 时间:2024/05/29 10:51
本问参阅资料整理Anglarjs模态三种实现方式:
- 简介
- Angalarjs模态框
- 一window实现confirm确认框
- 二modal模态框
- 三 基于anglarjs的DialogBox模态框
- 页面引用
- 样式表dialogcss
- directivedialogdialogBoxjs
- 调用方法
简介
模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
模态对话框垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框。用户对模态对话框的处理如图所示。
非模态对话框(Nonmodal Dialogue Box,又叫做无模式对话框),与模态对话框不同,当用户打开非模态对话框时,依然可以操作其他窗口。
——以上来自百度百科
Angalarjs模态框
一、$window实现confirm确认框
<html><head> <title></title></head><body> <script src="js/lib/angular.min.js"></script> <script type="text/javascript"> var app = angular.module('myApp', []) app.controller('indexController', function ($scope, $window) { $scope.ShowConfirm = function () { if ($window.confirm("Please confirm?")) { $scope.Message = "You clicked YES."; } else { $scope.Message = "You clicked NO."; } } }); </script> <div ng-app="myApp" ng-controller="indexController"> <input type="button" value="Show Confirm" ng-click="ShowConfirm()" /> <br /> <br /> <span ng-bind = "Message"></span> </div></body></html>
二、$modal模态框
<html><head> <title></title> <style> .confirmModal .modal-sm { width: 400px; } .confirmModal .modal-content { margin-top: 40%; } .confirmModal .modal-header { padding: 10px 15px; } .confirmModal .modal-body { padding: 10px 15px; border-top: 1px solid #e5e5e5; } </style></head><body> <script src="js/lib/angular.min.js"></script> <script type="text/javascript"> //$modal模板配置 angular.module('custom-template', []) .run(["$templateCache", function($templateCache) { $templateCache.put("template/modal/confirmModelTemplate.html", '<div class="m-c">\n'+ ' <div class="modal-header">\n'+ ' <h4 class="modal-title">{{title}}</h4>\n'+ ' </div>\n'+ ' <div class="modal-body">{{content}}</div>\n'+ ' <div class="modal-footer" style="text-align: center;">\n'+ ' <button type="button" class="btn btn-primary" ng-click="ok()">确定</button>\n'+ ' <button type="button" class="btn btn-warning" ng-click="cancel()">取消</button>\n'+ ' </div>\n'+ '</div>\n'+ ""); }]); var app = angular.module('myApp', ['custom-template']); app.controller('indexController', function ($scope,$modal) { $scope.openConfirmWindow=function(modalTitle,modalContent,modalInstance) { var deferred = $q.defer(); /* * modalInstance是在弹窗的基础上再弹出confirm确认框时从第一个弹窗中传进的$modalInstance, * 若是直接在页面上弹出confirm确认框,则不能传$modalInstance,否则会报错 */ var confirmModal = $modal.open({ backdrop: 'static', templateUrl : 'template/modal/confirmModelTemplate.html', // 指向确认框模板 controller : 'ConfirmCtrl',// 初始化模态控制器 windowClass: "confirmModal",// 自定义modal上级div的class size : 'sm', //大小配置 resolve : { data : function(){ return {modalTitle: modalTitle,modalContent: modalContent};//surgeonSug: $scope.surgeonSug, } } }); // 处理modal关闭后返回的数据 confirmModal.result.then(function() { if(!!modalInstance) { modalInstance.dismiss('cancel'); } deferred.resolve(); },function(){ }); return deferred.promise; } var modalTitle = '标题'; var modalContent = '内容' $scope.openConfirmWindow(modalTitle,modalContent).then(function() { //业务逻辑 }); }); </script> <div ng-app="myApp" ng-controller="indexController"> </div></body></html>
三、 基于anglarjs的DialogBox模态框
1.页面引用
<dialog load-data="data"></dialog>
2.样式表(dialog.css)
.dialog-main { position: fixed; z-index: 10; width: 100%; height: 100%; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%); -moz-transform: translateX(-50%) translateY(-50%); -o-transform: translateX(-50%) translateY(-50%); background: rgba(0, 0, 0, 0.5);}.dialog-main .close-button { position: absolute; width: 10px; height: 10px; right: 5px; top: 2px; font-style: normal; font-size: 14px; color: #AFAFAF; opacity: .5; cursor: pointer;}.dialog-main .close-button:hover { opacity: 1;}.dialog-main .dialog-box { min-width: 237px; position: absolute; background: #fff; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%); text-align: center;}.dialog-main p.tips { text-align: center; font-size: 18px; color: #3594C3; margin: 23px 0 34px;}.dialog-main table.dialog-table { width: 70%; margin: 0 auto;}.dialog-main table.dialog-table tr { display: block; margin-bottom: 20px;}.dialog-main table.dialog-table td { width: 160px; text-align: left; position: relative;}.dialog-main table.dialog-table td input,.dialog-main table.dialog-table td .dropdown-main,.dialog-main table.dialog-table td select { width: inherit; height: 30px;}.dialog-main table.dialog-table td textarea { width: inherit;}.dialog-main table.dialog-table td:first-child { width: 76px;}.dialog-main .dialog-button-box { text-align: center;}.dialog-main .dialog-button-box button { width: 80px; height: 25px; cursor: pointer; font-size: 14px; line-height: 25px; border: 1px solid #D8D8D8; color: #333; margin: 0 5px 20px; border-radius: 0;}.dialog-main .dialog-button-box button.button0 { border-width: 0; background: #01C5DA; color: white;}
3.directive–dialog(dialogBox.js)
app.directive('dialog', function () { return { restrict: 'AE', scope: { loadData: '=loadData'//数据源 可以是对象和url }, template: '<div ng-show="loadData.isShow" class="dialog-main"><div class="dialog-box">' + '<div class="dialog-content"><i class="close-button" ng-click="close()">x</i>' + '<div ng-include="loadData.template.url"></div>' + '</div>' + '<div class="dialog-button-box">' + '<button ng-click="clickValue(item,$index)" ng-repeat="item in loadData.buttons.list" class="{{\'button\'+$index}}">{{item[key]}}</button>' + '</div></div></div>', replace: true, link: function (scope, element, attr) { var buttons = {//默认按钮 key: 'name', list: [ { name: '确认', value: true }, { name: '取消', value: false } ]/*, callback: scope.callBack*/ }; scope.events = {}; scope.init=function(){ //判断是(内容or模板)or自定义按钮 if(scope.loadData==undefined){ return; }else if (typeof scope.loadData == "string") {//通过url传入 //scope.loadData = {//默认对话框 // show: false, // template: scope.loadData, // buttons: buttons //}; } else { //模板事件绑定 if(scope.loadData.template.events){//是否传入模板事件 scope.loadData.template.events(scope.events); } if(scope.loadData.buttons){//需要按钮 if (scope.loadData.buttons.list == undefined) {//判断是否使用默认按钮 buttons.callback=scope.loadData.buttons.callback; scope.loadData.buttons = buttons; } scope.key = scope.loadData.buttons.key;//用于确定按钮显示哪个字段 scope.clickValue = function (item, index) { scope.loadData.buttons.callback(item, index); }; } } scope.close=function(){ scope.loadData.isShow=false; } }; if(scope.loadData){ scope.init(); //scope.loadData. } scope.$watch('loadData',function(n,o){ scope.init(); }); } }});
4.调用方法
$scope.title="注册成功"; $scope.content="感谢你注册蓝海金融!为了你更好的体验使用,建议进行相关认证!"; $scope.data = { isShow: false, template: { url: basepath + 'content/warn-dialog.html', events: function (events) { //因为在当前$scope中定义,所以能够直接访问当前$scope空间 events.content = $scope.content; events.title=$scope.title; events.back=function(){//因为传递的是值,需要自己进行触发. $scope.backData ='这是一个回传(还可以查看控制台):'+events.content; }; } }, buttons: { key: 'name', list: [ { name: '立即绑卡', value: 'false' }, { name: '立即登陆', value: 'true' } ], callback: function (item, index) { if(item.value == 'true'){ $location.path('/login'); }else{ $location.path('/bindcard'); } $scope.data.isShow = false; } } };
阅读全文
0 0
- Angalarjs模态框三种实现
- 实现
- 实现
- 红黑树实现 实现代码
- java实现排列组合实现
- 实现Runnable 实现线程
- 实现ViewPager多种实现
- 双向LSTM实现实现
- 实现缓存 java实现
- 三子棋的实现的实现的实现
- 四则运算实现
- 继承实现
- 重载实现
- 实现缩略图
- split实现
- 实现缩略图
- wmi实现
- 实现缩略图
- 让java程序在后台一直执行(例如putty关闭后后台程序继续运行)
- cmake: No CMAKE_C_COMPILER could be found.
- 如何快速转载CSDN中的博客
- 函数去抖(debounce)和函数节流(throttle)
- Java反射机制-调用方法
- Angalarjs模态框三种实现
- (4)php框架开发---模板静态化处理
- matlab过期再次破解激活方法(在Matlab2010R测试可行)
- 自制WindowsCE上usb驱动的.cab安装包
- 按键精灵 使用LogStart可能会导致程序崩溃
- 小米路由器3实现锐捷认证[免刷固件]
- 设备 eno16777736 似乎不存在, 延迟初始化操作
- 独立按键与定时器的使用练习
- 厉害了,苹果承认故意让旧 iPhone 变慢!