angular 全局confirm确认框

来源:互联网 发布:淘宝点击收藏 编辑:程序博客网 时间:2024/06/05 07:14

全局确认框是在弹出模态框的基础上修改的。

配置

模板

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'+    "");}]);

然后在系统中引用定义的模板module:

var app = angular.module('myApp', ['custom-template']);

调用方法

在自定义的Common factory中定义打开确认框的方法。

angular.module('myApp').factory('Common', ['$http', '$q', '$cookieStore', '$location','$modal',  function ($http, $q, $cookieStore, $location,$modal) {    return {      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;      }    }  }]);

自定义CSS

.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;}

使用

在页面上使用的具体方法如下:

$scope.delete = function(id) {  var modalTitle = '提示!';  var modalContent = '确定删除吗?';  Common.openConfirmWindow(modalTitle,modalContent).then(function() {    $http.delete(url+id)      .success(function() {        $scope.load($scope.currSelSurgeon);        $rootScope.lxAlert['success']('删除成功!');      }).error(function() {        $rootScope.lxAlert['danger']('删除失败!');      });  });};

在弹出的模态框中使用的具体方法:

$scope.cancel = function(){  var modalTitle = '确定关闭吗?';  var modalContent = '填写的信息未保存,请确认是否关闭?';  Common.openConfirmWindow(modalTitle,modalContent,$modalInstance);};

第一种使用一定不能传入第三个参数modalInstance,否则会报错。第二种在弹出模态框的基础上再弹出确认框必须要传入$modalInstance,用于关闭模态框。到这里整个全局确认框的使用就完成了。
如有不当的地方,请予指正!

0 0
原创粉丝点击