मैं कोणीय-यूआई मोडल को बंद करने से कैसे रोकूं?


86

मैं अपनी परियोजना http://angular-ui.github.io/bootstrap/#/odal में Angular UI $ modal का उपयोग कर रहा हूं

मैं नहीं चाहता कि उपयोगकर्ता पृष्ठभूमि पर दबाव डालकर मॉडल बंद करें। मैं चाहता हूं कि एक मॉडल केवल बंद बटन दबाकर बंद किया जा सकता है जो मैंने बनाया है।

मैं मोडल को बंद होने से कैसे रोकूँ?

जवाबों:


193

जब आप अपना मोडल बनाते हैं तो आप उसके व्यवहार को निर्दिष्ट कर सकते हैं:

$modal.open({
   // ... other options
   backdrop  : 'static',
   keyboard  : false
});

2
हाँ, यह सही उत्तर है :) इसे साझा करने के लिए धन्यवाद!
स्काईवॉकर

ठंडा! साझा करने के लिए धन्यवाद। +1
खान

10
क्या इनको गतिशील रूप से सेट करने का कोई तरीका है - यह कहें कि क्या पॉपअप एक ऑपरेशन के बीच में है जिसे बाधित नहीं किया जाना चाहिए?
1

35
backdrop : 'static'

'क्लिक' ईवेंट के लिए काम करेगा लेकिन फिर भी आप पॉपअप को बंद करने के लिए "Esc" कुंजी का उपयोग कर सकते हैं।

keyboard :false

पॉप को रोकने के लिए "Esc" कुंजी द्वारा बंद करें।

उत्तर के लिए pkozlowski.opensource का धन्यवाद।

मुझे लगता है कि प्रश्न कोणीय यूआई बूटस्ट्रैप मोडल का डुप्लिकेट है - उपयोगकर्ता बातचीत कैसे रोकें


22

पुराना प्रश्न, लेकिन यदि आप विभिन्न करीबी क्रियाओं पर पुष्टि संवाद जोड़ना चाहते हैं, तो इसे अपने सामान्य उदाहरण नियंत्रक में जोड़ें:

$scope.$on('modal.closing', function(event, reason, closed) {
    console.log('modal.closing: ' + (closed ? 'close' : 'dismiss') + '(' + reason + ')');
    var message = "You are about to leave the edit view. Uncaught reason. Are you sure?";
    switch (reason){
        // clicked outside
        case "backdrop click":
            message = "Any changes will be lost, are you sure?";
            break;

        // cancel button
        case "cancel":
            message = "Any changes will be lost, are you sure?";
            break;

        // escape key
        case "escape key press":
            message = "Any changes will be lost, are you sure?";
            break;
    }
    if (!confirm(message)) {
        event.preventDefault();
    }
});

मेरे पास शीर्ष दाईं ओर एक बटन है, जो "रद्द" कार्रवाई को ट्रिगर करता है। बैकड्रॉप पर क्लिक करना (यदि सक्षम है), रद्द करने की क्रिया को ट्रिगर करता है। आप विभिन्न करीबी घटनाओं के लिए विभिन्न संदेशों का उपयोग करने के लिए उपयोग कर सकते हैं।


यह मेरे प्रश्न का उत्तर कैसे देता है?
राहुल प्रसाद

इसके साथ आप अवरोध कर सकते हैं कि क्या एक मोडल को निर्देश के कारण से बंद करने का निर्देश दिया गया है। इसके आधार पर यदि आप चाहें तो कस्टम लॉजिक जोड़ सकते हैं, या संभवत: उपयोगकर्ता को मोडल बंद करने से पहले पुष्टि के लिए संकेत दे सकते हैं।
टिआगो

जैसा कि प्रश्न में कहा गया है, मुझे एक तर्क बताइए, जो मोडल को बंद होने से रोकेगा?
राहुल प्रसाद

यदि आप यह सब चाहते हैं, तो बस event.preventDefault();अंदर का उपयोग करें case "backdrop click"और निष्पादन को समाप्त करें।
टियागो

4
+1। यह वास्तव में सुविधाओं (पृष्ठभूमि और कीबोर्ड ट्रिगर्स) को सीमित किए बिना मॉडल को बंद करने से रोकने का एक बेहतर तरीका है। नोट: ईवेंट प्रसारित किया जाता है इसलिए uibModalInstance स्कोप या डाउनस्ट्रीम स्कोप पर सुनना चाहिए। 0.13: a5a82d9
पोपोव

13

यह वही है जो प्रलेखन में उल्लिखित है

पृष्ठभूमि - एक पृष्ठभूमि की उपस्थिति को नियंत्रित करता है। अनुमत मान: सत्य (डिफ़ॉल्ट), असत्य (कोई पृष्ठभूमि नहीं), 'स्थिर' - पृष्ठभूमि मौजूद है लेकिन मोडल विंडो के बाहर क्लिक करने पर मोडल विंडो बंद नहीं होती है।

static काम हो सकता है।


क्या कोई विकल्प है ताकि कोई भी पृष्ठभूमि प्रदर्शित न हो और मॉडल विंडो के बाहर क्लिक करने पर मोडल विंडो बंद हो जाए?

8

विश्व स्तर पर कॉन्फ़िगर करें,

डेकोरेटर , कोणीय में सबसे अच्छी विशेषताओं में से एक। " 3 पार्टी मॉड्यूल " पैच करने की क्षमता देता है।

मान लें कि आप अपने सभी $modalसंदर्भों में यह व्यवहार चाहते हैं और आप अपनी कॉल बदलना नहीं चाहते हैं,

आप एक डेकोरेटर लिख सकते हैं । कि बस विकल्पों में जोड़ता है -{backdrop:'static', keyboard:false}

angular.module('ui.bootstrap').config(function ($provide) {
    $provide.decorator('$modal', function ($delegate) {
        var open = $delegate.open;

        $delegate.open = function (options) {
            options = angular.extend(options || {}, {
                backdrop: 'static',
                keyboard: false
            });

            return open(options);
        };
        return $delegate;
    })
});
  • नोट: नवीनतम संस्करणों में, का $modalनाम बदलकर$uibModal

ऑनलाइन डेमो - http://plnkr.co/edit/2MWIpOs3uAG5EFQy6Ndn?p=preview


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.