私はFullcalendarをはじめて使用しています。私は研究と問題解決のために過ごしたことがあり、うまくいかない問題を抱えています。 Ajaxコールの結果をループしてイベントを生成します。また、編集/削除機能を提供するために、ホバー上のイベントアイテムの上に表示されるレイヤーがあります。これはすべて正常に動作していましたが、静的なデータ(テスト中)で作業していましたが、今は動的にしました。Fullcalendar - ループ外のIDを取得する
eventMouseOver()がループの外側にあるため、idを定義できません。これは明らかですが、私には、ループの外側に定義された別の変数がイベントに説明を追加し、Ajax呼び出しのデータを使用して動作することもあります。ループの外側で定義された各説明は、異なるイベントでどこに配置する必要があります。
誰かが私のインライン関数呼び出しのidを取得するのを助けることができますか - editEventとdeleteEvent?
events: function(start, end, timezone, callback) {
$.ajax({
url: 'inc/scripts/expenses-scripts.php',
type: 'post',
dataType: 'json',
data: {
// our hypothetical feed requires UNIX timestamps
start: start.unix(),
end: end.unix(),
getExpenses: true, // an option!
salonId: $('#globalSalonId').text(), // an option!
},
encode: true,
success: function(doc) {
if(doc.success==true)
{
var events = [];
for(x=0; x<doc.event.length; x++)
{
events.push({
title: doc.event[x].description,
start: doc.event[x].start,
editable: true,
backgroundColor: doc.event[x].backgroundColor,
eventStartEditable: true,
eventDurationEditable: true,
description: doc.event[x].title+' - '+doc.event[x].price,
});
}
callback(events);
}
}
});
},
eventResize: function(event, delta, revertFunc, element) {
alert(event.title + " end is now " + event.end.format());
if (!confirm("is this okay?")) {
revertFunc();
}
},
eventDrop: function(event, delta, revertFunc, element) {
alert(event.id + " was dropped on " + event.start.format());
if (!confirm("Are you sure about this change?")) {
revertFunc();
}
},
// I lose the event.id here //
eventMouseover: function(event, domEvent, element) {
var layer = "<div id='events-layer' class='fc-transparent' style='position:absolute; width:100%; height:100%; top:-2px; text-align:right; z-index:100'> <a> <img border='0' style='padding-right:5px;' src='img/pencil.png' width='10' onClick='editEvent("+event.id+");'></a><a><img border='0' style='padding-right:5px;' src='img/invalid.png' width='10' onClick='deleteEvent("+event.id+");'></a></div>";
$(this).append(layer);
},
eventMouseout: function(event, domEvent) {
$("#events-layer").remove();
},
// ADD A DESCRIPTION TO AN EVENT //
// I have access to the event.description here though //
eventRender: function(event, element) {
element.find('.fc-title').append("<br/>" + event.description);
}
のAjaxコールバックで戻ってくるデータは
while($row = $result->fetch_object())
{
$data['event'][$x]['start'] = $row->expenseDate;
$data['event'][$x]['title'] = $row->expenseTitle;
$data['event'][$x]['id'] = $row->id;
$data['event'][$x]['category'] = $row->expenseCategory;
$data['event'][$x]['editable'] = 'true';
$data['event'][$x]['backgroundColor'] = '#3399cc';
$data['event'][$x]['eventStartEditable'] = 'true';
$data['event'][$x]['eventDurationEditable'] = 'true';
$data['event'][$x]['description'] = $row->expenseCategory;
$data['event'][$x]['price'] = '£'.$row->expenseTotal;
$data['event'][$x]['allDay'] = false;
$x++;
}
は、あなたは自分の 'events.push'呼び出しでIDを設定することはできません使用できるようになりましたか? –
はい@ stephen.vakil。そのように簡単です。 Youyに感謝) –