Create a simple Bootstrap Yes/No confirmation or just notification alert in AngularJS

后端 未结 5 1699
灰色年华
灰色年华 2020-12-02 18:49

It\'s so simple in a non-Angular environment. Just html and a two line of js code to show a modal confirmation dialog on the screen.

Now I am developting an AngularJ

5条回答
  •  臣服心动
    2020-12-02 19:05

    so create a reusable service for that... read here

    code here:

    angular.module('yourModuleName').service('modalService', ['$modal',
    // NB: For Angular-bootstrap 0.14.0 or later, use $uibModal above instead of $modal
    function ($modal) {
    
        var modalDefaults = {
            backdrop: true,
            keyboard: true,
            modalFade: true,
            templateUrl: '/app/partials/modal.html'
        };
    
        var modalOptions = {
            closeButtonText: 'Close',
            actionButtonText: 'OK',
            headerText: 'Proceed?',
            bodyText: 'Perform this action?'
        };
    
        this.showModal = function (customModalDefaults, customModalOptions) {
            if (!customModalDefaults) customModalDefaults = {};
            customModalDefaults.backdrop = 'static';
            return this.show(customModalDefaults, customModalOptions);
        };
    
        this.show = function (customModalDefaults, customModalOptions) {
            //Create temp objects to work with since we're in a singleton service
            var tempModalDefaults = {};
            var tempModalOptions = {};
    
            //Map angular-ui modal custom defaults to modal defaults defined in service
            angular.extend(tempModalDefaults, modalDefaults, customModalDefaults);
    
            //Map modal.html $scope custom properties to defaults defined in service
            angular.extend(tempModalOptions, modalOptions, customModalOptions);
    
            if (!tempModalDefaults.controller) {
                tempModalDefaults.controller = function ($scope, $modalInstance) {
                    $scope.modalOptions = tempModalOptions;
                    $scope.modalOptions.ok = function (result) {
                        $modalInstance.close(result);
                    };
                    $scope.modalOptions.close = function (result) {
                        $modalInstance.dismiss('cancel');
                    };
                };
            }
    
            return $modal.open(tempModalDefaults).result;
        };
    
    }]);
    

    html for display

    
    
    
    

    once this is done... you just have to inject above service whereever you want to create a dialog box, example below

     $scope.deleteCustomer = function () {
    
        var custName = $scope.customer.firstName + ' ' + $scope.customer.lastName;
    
    
        var modalOptions = {
            closeButtonText: 'Cancel',
            actionButtonText: 'Delete Customer',
            headerText: 'Delete ' + custName + '?',
            bodyText: 'Are you sure you want to delete this customer?'
        };
    
        modalService.showModal({}, modalOptions)
            .then(function (result) {
                 //your-custom-logic
            });
    }
    

提交回复
热议问题