2012-02-14 28 views
8
Takvim tamamen tamamlandıktan sonra adlandıran JQuery tam takviminde bir geri arama var mı? İstemci tarafında tüm olayları almak için bu geri aramada clientEvents işlevini çağırmak istiyorum. Bunu viewDisplay içinde yapmayı denedim, ancak olaylar oluşturulmadan önce çağrılır ve clientEvents, 0 olay döndürür.
+0

herhangi biri ..... Buraya takılıyorum :( – khizar

cevap

10

Aslında bunu kendiniz ekleyebilirsiniz. Bu

function render(inc) { 
    if (!content) { 
     initialRender(); 
     trigger('complete', null, true); 
    }else{ 
     calcSize(); 
     markSizesDirty(); 
     markEventsDirty(); 
     renderView(inc); 
     trigger('complete', null, true); 
    } 
} 

gibi fullcalendar.js işlevini render güncelleyin Ve ilk çağrı geri arama işlevi ekleyin: Eğer istediği gibi, tüm olayları erişebilir,

$('#calendar').fullCalendar({ 
     editable: true, 
     complete: function() {alert('complete');}, 

veya

complete: function() { 
     var events = $(this).fullCalendar('clientEvents'); 
     for(var i in events) 
     { 
      alert(events[i].title); 
     } 
    }, 
+0

Yanıt için bir çok thanx, ben test edeceğim ve geri göndereceğim, ama i tihnk bu sadece ihtiyacım olan şey – khizar

+0

@khizar ilk arama için çalışıyor , ancak olay güncellemesi ve diğer eylemler için kontrol edin, çünkü tekrar tetiklenebilir - Kodun içine derin bakmadım. – Cheery

+0

Tamam, çok sıkı bir son tarihte ve çözümünüzü test etmek için zamanım olmadı. Benim yazı ve cevabımın zamanı, iş çevreleri arıyordum ve tamamen geçici bir çözüm olarak, olayları teslim aldığım zaman için yükleme seçeneğinde clientEvents öğesini arayarak işimi tamamladım. coz'u cevaplayın mantıklı bir şekilde güzel görünüyor :) ve daha sonra tamamen test edin. – khizar

18

Bu gönderinin şu anda oldukça eski olduğunu biliyorum, ancak eğer herhangi bir yardım varsa, orijinal kaynağı Cheery tarafından önerilen şekilde değiştirmeye gerek yoktur (onun cevabı iyi olsa da).

Ayrıca sadece yerinde zaten geri arama 'yükleme' kullanabilirsiniz

:

$('#calendar').fullCalendar({ 
    loading: function(bool) { 
     if (bool){ 
     alert('I am populating the calendar with events'); 
     } 
     else{ 
     alert('W00t, I have finished!'); 
     // bind to all your events here 
     } 
    } 
); 
+10

Not kaydetme: yükleme yalnızca etkinliklerinizin bir yerden yüklenmesi gerektiğinde çalışır (IE, bir işlev çağrısı veya URL aracılığıyla). Etkinliklerinizi sadece JSON olarak geçiriyorsanız, yükleme (en az 1.5.5'ten itibaren) yanmaz. – AlexeyMK

5

Bu şimdi YOL eski olabilir, ama resmi bir geri çağırma işlevi (sürüm 1.6 eklenmiştir) bulunmuyor: eventAfterAllRender . Kaynak kod değişikliği gerekli değildir.

+1

eventAfterAllRender'ı kullanarak, her olay yükünde yanıyor gibi görünür. Ya sadece tek bir ateş istiyorsan? – cbloss793

+1

Doğru, ancak ilk seferde bir değişken kontrolü yapabilirsiniz. Örn: eğer (hasAlreadyRun) geri dönerse; –

+0

Ben de öyle yaptım. Sadece değişkeninizin uygun kapsama sahip olduğundan emin olun, böylece sadece onu kullanan işleve bağlı değildir ve bu işlev tekrar çalışmaya başlamadan önce yok olur. Dış kaynaklarla –

0

viewRender olayı buna yanıttır; yükleme sadece içerik yükleme için çalışır.