我需要在进行 AJAX 调用后将事件呈现为 HTML 表。当成功时,我正在获得表 HTMLS。但是当它在标题中呈现时,它将表格 HTMLS 显示为普通文本。当我用谷歌搜索它时,我找到了一个解决方案,我需要使用以下代码将其呈现为 HTMLS:
eventRender: function (event, element) {
element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());
});
但是当我把它放在我的代码中时,它显示了一些JS错误。我不知道为什么会发生此错误。请帮我弄清楚。请在下面找到该代码的完整部分:
dayClick: function(start,allDay, jsEvent, view) {
$('#calendar').fullCalendar('changeView', 'agendaDay');
var date_clicked = $.fullCalendar.formatDate( start, "yyyy/MM/dd");
var date_for_view = Date.parse(date_clicked);
var date_for_view=new Date(date_for_view);
$('#calendar').fullCalendar( 'gotoDate',date_for_view );
$.ajax({
url: "/admins/users/update_projects?date_selected="+date_clicked+"&uid="+'<%=params[:user]%>',
type: 'GET',
success: function (data, response, event, date) {
$('#calendar').fullCalendar('renderEvent',
{
title: data,
start: start
},
eventRender: function (event, element)
{
element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());
}); },
error: function () {
$('#calendar').fullCalendar('renderEvent',
{
title: "No Tasks Scheduled Today",
start: date_clicked
});
}
});
},
您应该将 eventRender 回调添加到初始化日历的代码中
// create fullCalendar
$('#calendar').fullCalendar({
eventRender: function(event, element, view) {
if (view.name == 'agendaDay') {
element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());
}
}
});
在 Ajax 响应中,只需调用 renderEvent 方法并将事件作为第二个参数传递
//call the render event method
$('#calendar').fullCalendar('renderEvent', {
title: 'My Event 2',
start: '2012-11-25'
});
工作示例:http://jsfiddle.net/bfz3J/1/
FullCalendar(v2.6.1)上,我在将html显示在agendaWeek和agendaDay中时遇到了问题。这对我有用:
eventRender: function(event, element, view) {
if (view.name === 'month') {
element.find('span.fc-title').html(element.find('span.fc-title').text());
} else if (view.name === 'agendaWeek' || view.name === 'agendaDay') {
element.find('div.fc-title').html(element.find('div.fc-title').text());
}
},
@i123fr3的技术仍然相关,但由于对 fullcalendar 的 HTML 进行了修改,它不再有效。 由 fullcalendar 生成的 HTML 现在使用 div
表示.fc-event-title
,而不是span
。
将eventRender
实现更改为:
if (view.name == 'agendaDay') {
element.find('.fc-event-title').html(element.find('.fc-event-title').text());
}
我对两种类型的事件的解决方案(少于半小时,多半小时)
eventRender: function (event, element)
{
//hack for view html(not as text)
element.find('.fc-event-title').html(element.find('.fc-event-title').text());
},
eventAfterAllRender:function( view ) {
$('.fc-event-time').each(function(){
$(this).html($(this).text());
});
},