2013-08-12 5 views
8

मैं jQuery प्लगइन full calendar का उपयोग backbone.js के साथ संयोजन में कर रहा हूं और एक समस्या है जहां यह पहली बार लोड होने पर ठीक से प्रदर्शित नहीं होता है।पूर्ण कैलेंडर लोड होने पर प्रदर्शित नहीं हो रहा है (रीढ़ की हड्डी के साथ)

यह रीढ़ की हड्डी कैलेंडर युक्त दृश्य के लिए मेरी समारोह प्रस्तुत करना है:

render: function() { 

    var that = this; 

    // DEBUG: 
    // console.log({entries: data}); 

    this.$el.html(this.template(this.serialize())); 

    this.$('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,agendaWeek,agendaDay' 
     }, 

     height: that.$el.parent().height() 
    }); 

      // prints undefined 
    console.log(this.$('#calendar').fullCalendar('getView').title); 

    window.setTimeout(function() { 
     this.$('#calendar').fullCalendar('changeView','agendaWeek'); 
    }, 500); 


    return this; 
} 

आप मैं एक सेट टाइमआउट है 500 एमएस के लिए शामिल देख सकते हैं। जब मैं 500 एमएस में देरी करता हूं, और फिर दृश्य को एजेंडा वीक में बदलता हूं, तो यह प्रदर्शित होगा। हालांकि, अगर मुझे देरी नहीं होती है, तो कैलेंडर नहीं दिखाता है। किसी भी मामले में मुद्रित कोई त्रुटि नहीं है।

मुझे यहां क्या प्रयास करना है या क्या गलत हो रहा है, इसकी हानि में हूं। क्या कैलेंडर के निर्माण के लिए कोई कॉलबैक है जिसे मैं दस्तावेज़ों में कहीं याद कर रहा हूं?

धन्यवाद

संपादित करें: यह हो सकता है कि .html() funciton पूर्ण और एक समस्या का कारण नहीं है?

+3

क्या फुल कैलेंडर शायद इसके तत्व के आकार या स्थिति की परवाह करता है? मैं Google मानचित्र के साथ संभवतः इसी तरह के मुद्दों पर आया हूं और 'सेटटाइमआउट (..., 0)' चाल मेरे लिए काम करती है। –

+0

मुझे पूरा यकीन है कि समस्या यह है कि @muistooshort ने बताया। मैंने पूर्ण कैलेंडर प्लगइन का उपयोग किया है और यह इसके तत्व के "आकार और स्थिति" के बारे में परवाह करता है। – Jack

+0

यदि आप ऊंचाई को हार्ड कोड करते हैं तो क्या समस्या बनी रहती है? यह क्या है। Serialize() रिटर्न? –

उत्तर

12

मैं एक ऐसी ही समस्या थी और डॉक्स में इस महत्वपूर्ण जानकारी मिली:

http://arshaw.com/fullcalendar/docs/display/render/

मेरा कैलेंडर एक टैब पर था वर्तमान में पैरेंट कंटेनर दिखाई नहीं है और इस तरह सही ढंग से तैयार नहीं कर रही है का चयन नहीं किया। टैब का चयन करने के बाद रेंडर विधि में एक कॉल जोड़ा गया और यह सब बहुत अच्छा काम किया।

आपकी समस्या को इसी तरह हल किया जा सकता है।

+0

धन्यवाद ..! :) –

1

मैं backbone.js का उपयोग कर रहा हूं और मुझे भी एक ही समस्या थी।

मैं OnRender() ईवेंट में कैलेंडर घोषित और आरंभ कर रहा था।

बाद में इस समस्या को हल करने के लिए मैंने कैलेंडर को OnShow() ईवेंट में घोषित करने और प्रारंभ करने के लिए कोड स्थानांतरित कर दिया।

मुद्दा:

अपनी समस्या के अनुसार ऐसा इसलिए है क्योंकि आवश्यकता तत्व डोम पर मौजूद नहीं थे। OnShow() निकाल दिया जाता है जब आपका डोम पूरी तरह से तैयार होता है।

अंततः यह मेरे लिए काम करता था।

संबंधित मुद्दे