2015-04-11 17 views
18

Sto utilizzando FullCalendar http://fullcalendar.io/ per visualizzare alcuni eventi su una pagina Web.Eventi FullCalendar mostrati solo nella vista mese

Il calendario è stato creato in questo modo

$('#calendar').fullCalendar({ 
     header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
     }, 
     allDayDefault: false, 
     selectable: true, 
     selectHelper: true, 
     editable: true, 
     eventLimit: true, // allow "more" link when too many events 
    }); 

eventi sono creati attraverso l'operazione renderEvent (alimentazione non JSON) come

$('#calendar').fullCalendar('renderEvent', newEvent, 'stick'); 

dove il NewEvent si crea in questo modo

newEvent = { 
       title : 'mytitle', 
       start : startDate, 
       allDay: false, 
       id: eventId, 
       description: 'my test event' 
      }; 

il problema è che gli eventi vengono visualizzati correttamente nella vista mese ma non vengono visualizzati in settimana o vista del giorno.

UPDATE

Sto usando questo formato di data: 2015-02-01T01: 00: 00

+7

Sarebbe bello se si potesse fornire un jsfiddle che replica tale questione. Grazie! –

+0

Quali versioni di 'jQuery' e' fullcalendar' usi? come è definito il tuo 'startDate'? – LeGEC

risposta

8

ho creare un plunker reproducing your code. L'unico problema che vedo nel tuo codice è una virgola prevista nella creazione dell'evento.

Così creo l'evento con un nuovo oggetto momento, che significa ora.

var startDate = moment(); 
    var eventId = 123; 
    var newEvent = { 
       title : 'mytitle', 
       start : startDate, 
       allDay: false, 
       id: eventId, //Is this comma that was missing in your code 
       description: 'my test event' 
      }; 

E aggiungo che con lo stesso codice che si sta facendo:

$('#calendar').fullCalendar('renderEvent', newEvent, 'stick'); 

Come è possibile controllare in tutto plunker sta lavorando bene, quindi l'unico problema il codice è fornire a noi potrebbe avere:

  • La virgola mancante.
  • La variabile eventId è sbagliato
  • La variabile startDate è sbagliato

Inoltre, se si dà un'occhiata alla documentazione per render event non si sta utilizzando la variabile 'bastone' correttamente. Dovrebbe essere un booleano. Nel tuo codice funziona perché è possibile verificare in line 9229 for version 2.3.1 confrontato come espressione, quindi qualsiasi stringa (non vuota) sarà vera. Si possono avere maggiori informazioni su questo in questa risposta: https://stackoverflow.com/a/4923684/2686163

Quindi, se si imposta il terzo bastone parametro come:

  • vero
  • 'bastone'
  • 'antiaderente'
  • ' false'
  • 'qualunque'

... sempre B Risolto come appiccicoso e aggiunto allo stickySource. Ma, come commentato da @slicedtoad, dovresti cambiarlo per evitare problemi nelle versioni future.

+0

Sì, @slicedtoad. Era solo una spiegazione per il motivo di avere un evento appiccicoso anche quando la variabile stick non viene usata correttamente. –

+0

La virgola era effettivamente presente nel codice originale, la data di inizio è corretta in quanto l'evento è mostrato nella vista mensile e così è (penso) l'id. Ho visto il plunker funziona ma non riesco ancora a capire perché non funziona nel mio sito web. – lowcoupling

+1

Quindi @slicedtoad e io abbiamo raggiunto la stessa situazione. C'è qualcosa nel tuo codice che non ci hai fornito causando quel problema. –

7

Non c'è niente di sbagliato nel codice. Ma stai facendo alcune cose in un modo non standard.Prova a risolverli e il problema potrebbe scomparire.

Il metodo che si sta utilizzando per aggiungere eventi non è quello giusto. Nella terminologia FullCalendar, render indica il processo di visualizzazione dei dati nel calendario. Quindi, quando fai il numero renderEvent, lo stai dicendo allo display un evento sullo schermo. E quindi stick lo rende persistente (tipo di).

Invece si dovrebbe usare addEventSource. Può essere utilizzato per aggiungere qualsiasi fonte di eventi (locale o remoto). E un evento Source può essere qualsiasi cosa, da un feed JSON a un array locale di un evento.

Questo dovrebbe funzionare:

$('#calendar').fullCalendar('addEventSource',[{ 
    title : 'mytitle', 
    start : startDate, 
    allDay: false, 
    id: eventId, 
    description: 'my test event' 
}]); 

che ti dà un evento che durerà per l'intera sessione. Ha anche il vantaggio di giocare bene con tutte le altre opzioni e callback fullcalendar.

+0

provato ma non funziona :( – lowcoupling

+0

@lowcoupling Stesso problema o diverso? – slicedtoad

+0

Stesso problema :( – lowcoupling

3

Ho effettuato fiddle utilizzando il codice con alcune modifiche dal mio lato. Funziona bene. Spero che funzionerà per te. I tuoi input sono i benvenuti

Codice

HTML

<body> 
    <div id='calendar'></div> 
</body> 

SCRIPT

<script type='text/javascript'> 
$(document).ready(function(){ 
    fullCalObj = $('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,agendaWeek,agendaDay' 
     }, 
     allDayDefault: false, 
     selectable: true, 
     selectHelper: true, 
     editable: true, 
     eventLimit: true, // allow "more" link when too many events 
    }); 

    var newEvent = { 
     title : 'mytitle', 
     start : '2015-04-22', 
     allDay: false, 
     id: 1, 
     description: 'my test event' 
    }; 

    fullCalObj.fullCalendar('renderEvent', newEvent, 'stick'); 
}); 
</script> 
Problemi correlati