【发布时间】:2020-12-23 23:44:45
【问题描述】:
我在从我的字符串中检索这些时遇到了一些问题
这是我的脚本,取自网站..
events: {
url: '/CalendarManager/Findall',
method: 'GET',
extraParams: {
custom_param1: 'customerName',
custom_param2: 'description'
},
failure: function () {
alert('there was an error while fetching events!');
},
eventRender: function (event, element) {
element.qtip({
content: event.custom_param1,
content: event.custom_param2
});
}
},
更新:2020 年 12 月 24 日
回答以下问题.. 我使用的是 5.3.2 版本。我也可以使用它,它会带回除自定义参数之外的所有内容。
events: '/CalendarManager/Findall',
我正在使用从 DB 中提取的 Json - 下面是代码..
public ActionResult FindAll()
{
return Json(db.GetEvents.AsEnumerable().Select(e => new
{
id = e.CompanyId,
companyName = e.CompanyName,
title = e.Title,
description = e.Description,
allDay = e.AllDay,
start = e.StartDate.ToString("yyyy-MM-ddTHH:mm:ss"),
end = e.EndDate.ToString("yyyy-MM-ddTHH:mm:ss"),
color = e.Color
}).ToList(), JsonRequestBehavior.AllowGet);
}
我更改了我正在使用的版本,这就是额外功能没有出现的时候。所以我添加了我认为文档说要使用的内容。
在 url 之后添加额外的参数不起作用..
更新: 我通读了建议。我想我仍然不明白,或者可能没有得到“我应该把代码放在哪里”。
我相信我需要使用eventContent。我也确实使用了console.log(info.event.extendedProps.companyName);,这很棒,它确实显示在控制台窗口中,但是我需要它在日历上而不是在控制台窗口中。 FullCalendar 的例子可能会更好一点!
这是我所做的,但仍然没有显示在日历上。
eventDidMount: function (info) {
var tooltip = new Tooltip(info.el, {
title: info.event.extendedProps.description,
placement: 'top',
trigger: 'hover',
container: 'body'
});
console.log(info.event.extendedProps.companyName);
},
eventSources: [{
url: '/CalendarManager/Findall',
failure: function () {
alert('there was an error while fetching events!');
},
}],
eventContent: function (arg) {
html: arg.event.extendedProps.companyName
}
我确实在其中添加了一些东西,以便在将鼠标悬停在此信息上时只产生一个气泡,但它也不起作用。
谢谢!
更新:2020 年 12 月 27 日工作代码
var calendar = new FullCalendar.Calendar(calendarEl, {
headerToolbar: {
left: 'prevYear,prev,next,nextYear today',
center: 'title',
right: 'dayGridMonth,dayGridWeek,dayGridDay,listWeek'
},
initialView: 'dayGridMonth',
navLinks: true, // can click day/week names to navigate views
editable: true,
dayMaxEvents: true, // allow "more" link when too many events
themeSystem: 'bootstrap',
selectable: true,
selectMirror: true,
//Random default events
//events: '/CalendarManager/Findall',
eventDidMount: function (info) {
var tooltip = new Tooltip(info.el, {
title: info.event.extendedProps.description,
placement: 'top',
trigger: 'hover',
container: 'body'
});
console.log(info.event.extendedProps.companyName);
},
events: {
url: '/CalendarManager/Findall',
failure: function () {
alert('there was an error while fetching events!');
},
},
eventContent: function (arg) {
return { html: arg.event.title + '<br>' + arg.event.extendedProps.companyName + '<br>' + arg.event.extendedProps.description };
}
});
calendar.render();
感谢您的帮助!
【问题讨论】:
-
您确定
events是对象吗?因为在FullCalendar文档中他们使用的是数组。 -
extraParams用于发送到服务器,而不是接收它(如果您感到困惑,我建议您重新阅读文档) .因此,这些属性将不存在于您的事件数据中。如果您想在事件数据中添加自定义属性,那么您应该在返回 JSON 之前在服务器端添加它们。而且,最新的 fullCalendar 中不存在 eventRender。请始终使用您正在使用的确切 fullCalendar 版本标记问题,因为版本之间存在很大差异。下面的答案有更多细节。 -
感谢您的更新...。您说
it will bring back everything but the custom parameters....是的,因为自定义参数是您发送的内容。他们没有回来,他们走了。而且您的 FindAll() 方法不接受传入参数,因此它不期望它们。 -
那么问题就来了,如何显示json字符串中已经存在的自定义参数?
-
好的,首先请阅读fullcalendar.io/docs/event-object 并确保您理解文章末尾关于非标准字段的内容。接下来请阅读fullcalendar.io/docs/event-render-hooks - 这是在 fullCalendar 版本 5 中替换 eventRender 的功能。根据这些信息尝试并实施一些方法来解决您的问题。如果您在那之后仍然遇到困难,请编辑您的问题以显示您更新的代码。 (附言,据我所知,您根本不需要 customParams,因此您可以将其从事件定义中删除)。
标签: javascript fullcalendar fullcalendar-5