2015-05-07 17 views
6

मैं एक मॉडल, नीचे बताया गया है,बूटस्ट्रैप-डेटपिकर क्यों प्रदर्शित होता है 'show.bs.modal' ट्रिगर करता है?

https://cl.ly/image/2E3T1q3c3C0E/Image%202015-05-07%20at%204.14.23%20PM.png

जब मैं इनपुट क्षेत्र है कि दिनांक पिकर होता है, .on ('show.bs.modal') ट्रिगर किया जाता है बूटस्ट्रैप मोडल घटना, चयन जो सुपर समस्याग्रस्त है क्योंकि जब मोडल वैध रूप से दिखाया जाता है तो मैं सभी प्रकार की एसिंक कार्रवाई कर रहा हूं। मेरा मानना ​​है कि मोडल पहले से ही दिखाया गया है और यह घटना फायरिंग नहीं होनी चाहिए।

मैं, के रूप में नीचे संदर्भित बूटस्ट्रैप घटना 'show.bs.modal' पर एक श्रोता है

handleModalLaunch:() -> 
    $(@modalClass).on 'show.bs.modal', (event) => 
     return if event.dates 
     promise = new Promise ((resolve, reject) => 
     @setModalData(event) 
     if (@interactionData) 
      resolve(@interactionData) 
     else 
      reject(false) 
    ) 
     promise.then(
     (results) => 
      @trigger 'setRooms', @callBacks 
      @trigger 'setStudentInfo', @callBacks 
     (err) -> 
      err 
    ) 

और प्रभावी ढंग से, श्रोता फिर जो बाद में वादा और संबद्ध कॉलबैक बुला रहा है शुरू हो जा रहा है, घटना की शुरुआत करना समस्याग्रस्त है क्योंकि निश्चित रूप से मॉडल पहले ही दिखाया गया है और मैं नहीं चाहता कि ये कॉलबैक/वादा चल रहा हो।

मैं return if event.dates जोड़ा घटना है कि datepicker मोडल शो ईवेंट को ट्रिगर करने में इस कोड (event.dates एक संपत्ति datepicker घटना के लिए अद्वितीय जा रहा है), के लिए मूल रूप से शॉर्ट सर्किट, लेकिन निश्चित रूप से, इस hacky है और मैं था बेहतर समझना पसंद है कि क्यों डेटपिकर शो कार्यक्रम को ट्रिगर कर रहा है। संभावित रूप से, चूंकि मेरा शो भी श्रोता मोडल की कक्षा से जुड़ा हुआ है, डेटपिकर को दिखाने का कार्य शायद माता-पिता के मोडल का लक्ष्य प्राप्त करता है और संभवतः यह एक मोडल है, यानी, मोडल (डेटपिकर) दिखाया गया है और डेटपिकर के बाद से अभिभावक मोडल से विरासत, घटना ट्रिगर करती है जैसे कि यह अभिभावक मोडल 'दिखाया गया' था। क्या मैंने पूरी तरह उलझन में है? (वास्तव में, यह मेरे लिए स्पष्ट अब लगता है, लेकिन अभी भी समझने के लिए कैसे तय करने के लिए की जरूरत है।) चीयर्स,

जद

+0

तो यह फिर से खोलना है मोडल या कुछ भी नहीं हो रहा है? – CENT1PEDE

+0

@ ग्रीनफ़ॉक्स मैंने आशा व्यक्त करने के लिए आपको कुछ और टिप्पणी दी है। – John

उत्तर

16

इस दिनांक पिकर पुस्तकालय में एक बग है। आप इसे github here पर ट्रैक कर सकते हैं। वर्क अराउंड @kroeder

$("#my-datepicker").datepicker().on('show.bs.modal', function(event) { 
    // prevent datepicker from firing bootstrap modal "show.bs.modal" 
    event.stopPropagation(); 
}); 
1

उपयोग इस

$(date-picker-selector).on("show", function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
}).on("hide", function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); 
}); 
0

द्वारा वहाँ दिया जाता है इस प्रयास करें:

modal.on('show.bs.modal', function(e) { 
    if (e.namespace === 'bs.modal') { 
     // Your code here 
    } 
}); 
संबंधित मुद्दे