换行后的最终效果
实现后的效果如下图所示:
将单元格里title换行,并且用不同的样式区分诗词标题和作者。
在title里直接使用html标签无效,只好采用&&符号将不同内容区分开。
然后在渲染单元格内容之前,再对title进行分割处理。
注意本人使用的是fullcalendar的最新版本,官网在这里:https://fullcalendar.io/docs/initialize-globals
1. calendar的配置:
var calendarConfig = { initialView: 'dayGridMonth', locale: 'zh', fixedWeekCount: false, headerToolbar: { start: 'today', center: 'title', end: 'prevYear,prev,next,nextYear' }, buttonText: { today: '今天' }, events: [], eventContent: function(cell){ var content = $('<div />'); console.log("title:", cell.event.title); var title = cell.event.title; var titleArr = title.split("&&"); //诗词标题加粗 content.append($('<strong />').text(titleArr[0])); //诗人加个className,方便控制css样式 content.append($('<div class="poet">').text(titleArr[1])); return { html: content.get(0).outerHTML }; }, dateClick: function(dateObj){ } };
2. 对接后端数据:
var planData = []; $.each(resp.data, function(index, planItem){ var poemTitle = planItem.title + '&&' + planItem.dynasty + '·' + planItem.poet; var cellData = {title: poemTitle, start:planItem.plan_date, end:planItem.plan_date}; planData.push(cellData); }) calendarConfig.events = planData;
3. 日历初始化:
var calendarEl = document.getElementById("table_poem"); var calendar = new FullCalendar.Calendar(calendarEl, calendarConfig);