私は完全な予定表Jsライブラリを使用してスケジューリング機能を作成しています。私はselect
メソッドを使って、ユーザが日付をクリックするとmodal form
を開くことができます。私のコードは、新しく追加されたすべてのイベントをいくつかの甘いものAjax
を使ってデータベースに保存します。Django FullCalendarイベントを永続化させる
$.ajax({
type:'POST',
url:'createEvent/',
data:{
name: name,
start: start.format("YYYY-MM-DD"),
end: end.format("YYYY-MM-DD"),
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
},
sucess:function(){
alert("Event added")
}
});
は、その後、私はいくつかのdjango
魔法使用して、対応するイベントをプリントアウトするloading
メソッドを使用しました。その後、ログイン、ログアウト、私はページを更新した場合次に
$('#calendar').fullCalendar({
loading: function(bool){
if (bool){
{% for object in objects %}
var name = "{{ object.name }}";
var start = "{{ object.start }}";
var end = "{{ object.end }}";
var event={id:1 , title: name, start: start+"T14:30", end:end,};
$('#calendar').fullCalendar('renderEvent', event, true);
{% endfor %}
}
},
});
を、イベントが持続します!しかし、私はバグを発見しました。ご存じのように、フルカレンダーには、数ヶ月間に渡るボタンが装備されています。残念なことに、このボタンをクリックするたびに、リフレッシュのように動作し、カレンダーにrender
重複イベントが発生します。あなたが推測したように、ボタンをクリックするたびにloading
メソッド内のfor loop
が実行されます。 javascript
には、ページが最初に読み込まれたときにのみloading
部分のみを実行するように指定するにはどうすればよいですか?私はこのようなものを試した:
$(window).onload = function() {
$('#calendar').fullCalendar({
loading: function(bool){
if (bool){
{% for object in objects %}
var name = "{{ object.name }}";
var start = "{{ object.start }}";
var end = "{{ object.end }}";
var event={id:1 , title: name, start: start+"T14:30", end:end,};
$('#calendar').fullCalendar('renderEvent', event, true);
{% endfor %}
}
},
});
};
しかし、それは動作しません。何か案は?