EasyModal Examples

本文介绍了一个基于Angular的简易模态框服务实现示例,包括简易警告框、确认框及自定义模态框等功能,展示了如何通过Angular指令和服务来创建交互式的模态窗口。
<body ng-app = "easyModalApp" class="container">
<div ng-controller="easyAlertController">
    <p><h3>Easy Alert Examples:</h3>
    <button class="btn btn-info" ng-click="showModal1()" type="button">Simple Alert</button>
    <button class="btn btn-info" ng-click="showModal2()" type="button">New Button Label and Fadein</button>
</div>
<p></p>
<div ng-controller="easyConfirmController">
    <p><h3>Easy Confirm Examples:</h3>
    <button class="btn btn-success" ng-click="showModal1()" type="button">Simple Confirm</button>
    <button class="btn btn-success" ng-click="showModal2()" type="button">Simple Confirm with New Label</button>
    <button class="btn btn-success" ng-click="showModal3()" type="button">Simple Confirm with Callback Args</button>
    <h4 class="bg-info text-primary">{{data}}</h4>
</div>
<p></p>
<div ng-controller="easyModalController">
    <p><h3>Easy Modal Examples:</h3>
    <button class="btn btn-default" ng-click="showModal1()" type="button">Simple String Template</button>
   <!-- <button class="btn btn-default" ng-click="showModal2()" type="button">External Template</button> -->
    <button class="btn btn-default" ng-click="showModal3()" type="button">Callback Function</button>
    <button class="btn btn-default" ng-click="showModal4()" type="button">Extern Controller</button>
    <button class="btn btn-default" ng-click="showModal5()" type="button">Extra Buttons with Callback</button>
    <h4 class="bg-info text-primary">{{data}}</h4>
</div>

</body>

================================================================================================


    var easyModalApp = angular.module("easyModalApp", ['emodalService']);


    easyModalApp.controller("easyAlertController",['$scope','emodal',function ($scope, emodal) {
        $scope.showModal1 = function(){emodal.alert("Messages go here!");};
        $scope.showModal2 = function(){emodal.alert("<strong>Disappear in 2 seconds</strong>",
                                                      {okLabel:'New Label',okClass:'btn btn-success',fadein:2000}
                                                     );
        };
    }]);


    easyModalApp.controller("easyConfirmController",['$scope','emodal', function ($scope, emodal) {
        $scope.showModal1 = function(){
           emodal.confirm("Are you sure to delete?",
               function(){
                   $scope.data='You have clicked OK!';
               },
               function(){
                   $scope.data='You have clicked Cancel!';
               }
           );
        };
        $scope.showModal2 = function(){
            emodal.confirm("It is not recoverable!",
                function(){
                    $scope.data='You have clicked YES!';
                },
                function(){
                    $scope.data='You have clicked NO!';
                },
                {
                    title:'Are you sure to delete?',
                    okLabel:'YES',
                    okClass:'btn btn-success',
                    cancelLabel:'NO',
                    cancelClass:'btn btn-danger'
                }
            );
        };
        $scope.showModal3 = function(){
            emodal.confirm("Args passed into callback!",
                function(arg){
                    $scope.data='You have clicked OK! Arg is: '+arg.info;
                },
                function(arg){
                    $scope.data='You have clicked Cancel! Arg is: '+arg.info;
                },
                {
                    title:'Confirm dialog can also accept args!',
                    okArgs:{info:true},
                    cancelArgs:{info:false}
                }
            );
        };
    }]);


    easyModalApp.controller("easyModalController",['$scope','emodal',function ($scope, emodal) {
        $scope.showModal1 = function(){
            emodal.modal({template:'Messages go here!',cancelShow:true});
        };
        $scope.showModal2 = function(){
            emodal.modal("../partials/externalTemplate.html",
                {title:'Title Here',
                 okLabel:'Submit'});
        };
        $scope.showModal3 = function(){
            emodal.modal("../partials/externalTemplate.html",
                {
                title:'Callback Function',
                okCallback:okCallbackFun,
                okArgs:{id:1},
                cancelCallback:cancelCallbackFun,
                cancelArgs:{info:'some text'}
               });
        };
        $scope.showModal4 = function(){
            emodal.modal({
                template:'<strong>Message from external controller:</strong><p></p>{{data}}',
                title:'External Controller',
                controller:'externalController'
            });
        };
        $scope.showModal5 = function(){
            emodal.modal({
                template:'There are two extra buttons!',
                title:'Extra Buttons Demo',
                okCallback:okCallbackFun,
                okArgs:{id:1},
                cancelCallback:cancelCallbackFun,
                cancelArgs:{info:'some text'},
                buttons:[
                           {label:'Extra-1',class:'btn btn-warning',callback:extraCallBackFun1,args:{info:'from extra button 1'}},
                           {label:'Extra-2',class:'btn btn-success',callback:extraCallBackFun2,args:{info:'from extra button 2'}}
                         ]
            });
        };
        var okCallbackFun = function (arg) {
            $scope.data = '[ok callback] Parameter: '+arg.id;
        };
        var cancelCallbackFun = function (arg) {
            $scope.data = '[cancel callback] Parameter: '+arg.info;
        };
        var extraCallBackFun1 = function (arg) {
            $scope.data = '[extra callback 1] Parameter: '+arg.info;
        };
        var extraCallBackFun2 = function (arg) {
            $scope.data = '[extra callback 2] Parameter: '+arg.info;
        };
    }]);
    
    easyModalApp.controller("externalController",['$scope', function ($scope) {
        $scope.data = 'hello from externalController!';
    }]);
    


Easy Alert Examples:

 

Easy Confirm Examples:

  

Easy Modal Examples:

     



    //below is angular-easymodal.min.js


    angular.module("emodalService",[]).factory("emodal",["$document","$compile","$rootScope","$controller","$timeout",function(l,a,e,n,o){var t={},c=l.find("body"),s={id:null,title:null,template:null,templateClass:null,templateUrl:null,footerTemplate:null,backdrop:!0,backdropClass:"modal-backdrop",backdropCancel:!0,okLabel:"OK",okClass:"btn btn-primary",okShow:!0,okCallback:null,okCallbackObj:null,okArgs:null,cancelLabel:"Cancel",cancelClass:"btn",cancelShow:!1,cancelCallback:null,cancelCallbackObj:null,cancelArgs:null,fadein:null,modalClass:"modal",controller:null,buttons:null,css:{top:"15%",margin:"0 auto"}};return t.alert=function(){var l={};arguments[1]instanceof Object&&(l=arguments[1]),l.template=arguments[0],this.modal(l,"alert")},t.confirm=function(){var l={};arguments[3]instanceof Object&&(l=arguments[3]),void 0!=arguments[2]&&(arguments[2]instanceof Function?l.cancelCallback=arguments[2]:l=arguments[2]),l.template=arguments[0],l.okCallback=arguments[1],l.cancelShow=!0,this.modal(l,"confirm")},t.modal=function(l,t,d){var r=!1,m=!1;arguments.length>0?(angular.isObject(l)?(d=t,t=l,"alert"==d&&(r=!0),"confirm"==d&&(m=!0)):(t=null==t?{}:t,t.templateUrl=l),t=angular.extend({},s,t)):t=s;var i=t.id?' id="'+t.id+'" ':"",u="";if((t.okShow||t.okCallback)&&(u+='<button class="'+t.okClass+'" ng-click="$modalOK()">{{$modalOKLabel}}</button>'),(t.cancelShow||t.cancelCallback)&&(u+='<button class="'+t.cancelClass+'" ng-click="$modalCancel()">{{$modalCancelLabel}}</button>'),t.buttons)for(var b=0;b<t.buttons.length;b++){var k=t.buttons[b];u+='<button class="'+k["class"]+'" ng-click="$modalButton('+b+')">'+k.label+"</button>"}var C='<div class="modal-footer">'+(t.footerTemplate||u)+"</div>";r&&(t.templateClass=t.templateClass||"alert alert-info"),m&&(t.templateClass=t.templateClass||"alert alert-danger");var v=function(){return t.template?angular.isString(t.template)?'<div class="modal-body '+t.templateClass+'">'+t.template+"</div>":'<div class="modal-body">'+t.template.html()+"</div>":t.templateUrl?'<div class="modal-body" ng-include="\''+t.templateUrl+"'\"></div>":'<div class="modal-body"></div>'}(),p='<div class="'+t.modalClass+' fade"'+i+' style="display: block;">';p+=r||m?'  <div class="modal-dialog modal-sm">    <div class="modal-content">':'  <div class="modal-dialog">    <div class="modal-content">',p+=t.title?'      <div class="modal-header">        <button type="button" class="close" ng-click="$modalClose()">&times;</button>        <h3>{{$title}}</h3>      </div>':r||m?'      <div class="modal-header"></div>':'      <div class="modal-header">        <button type="button" class="close" ng-click="$modalClose()">&times;</button>      </div>',p+=v+C+"    </div>  </div></div>";var g=angular.element(p);for(key in t.css)g.css(key,t.css[key]);var f="<div ";t.backdropCancel&&(f+='ng-click="$modalCancel()"'),f+=">";var $=angular.element(f);$.addClass(t.backdropClass),$.addClass("fade in");var y=function(l){27===l.keyCode&&w.$modalCancel()},h=function(){c.unbind("keydown",y),g.remove(),t.backdrop&&$.remove()};c.bind("keydown",y);var O,j,w=t.scope||e.$new();w.$title=t.title,w.$modalClose=h,w.$modalOK=function(){t.okCallback&&t.okCallback.call(t.okCallbackObj,t.okArgs),w.$modalClose()},w.$modalCancel=function(){t.cancelCallback&&t.cancelCallback.call(t.cancelCallbackObj,t.cancelArgs),w.$modalClose()},w.$modalButton=function(l){var a=t.buttons[l];a.callback&&a.callback.call(a.callbackObj,a.args),w.$modalClose()},w.$modalOKLabel=t.okLabel,w.$modalCancelLabel=t.cancelLabel,t.controller&&(j=angular.extend({$scope:w},d),O=n(t.controller,j),g.contents().data("$ngControllerController",O)),a(g)(w),a($)(w),c.append(g),t.backdrop&&c.append($),t.fadein&&o(function(){w.$modalClose()},t.fadein),o(function(){g.addClass("in")},200)},t}]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值