我有一个fullcalendar的实现,它使用SQLExpress来存储事件。我想做的是。
示例:我在添加事件对话框中有一个下拉列表,该对话框名为"付款类型"选择"私人支付"或"保险"
调用事件渲染时,我有以下代码:
switch (event.paymenttype) {
case 'private pay': event.title = "P " + event.title; break;
case 'insurance': event.title = "I " + event.title; break;
代码预先设置" P"和#34;我"到我的活动标题,但只有在我点击更新对话框中的活动时才能看到。
我希望在主日历视图中看到它。
我在这里有一个jsfiddle https://jsfiddle.net/OhioGTO1969/9wxw85r0/1/
感谢您的期待!
约翰
答案 0 :(得分:0)
您的问题是在eventRender期间,已经创建了用于显示事件的HTML。您可以通过回调的element
参数访问它。
因此,修改event
对象不会执行任何操作,因为fullCalendar已经使用它并完成它以创建HTML。此时您不会注意到对事件对象所做的任何更改。它在回调中可用的原因是你可以从中选择任何你需要的东西,然后在将HTML元素放在日历上之前调整它。
现在,您可以使用eventRender调整HTML对象 - 提取包含描述的元素,修改它,然后将其写回主元素。但是,由于您只想更改title属性,因此有一种更简单的方法:
eventDataTransform
回调在从事件源获取事件之后但在事件对象用于生成任何HTML之前运行。您可以使用它来更改事件对象,然后将其用于呈现。这非常适合您的用例。
您可以按如下方式进行设置:
eventDataTransform: function(event) {
switch (event.paymenttype) {
case 'private pay': event.title = "P " + event.title; break;
case 'insurance': event.title = "I " + event.title; break;
}
return event;
}
有关两个回调的详细信息及其差异,请参阅https://fullcalendar.io/docs/eventRender和https://fullcalendar.io/docs/eventDataTransform。
你的JSFiddle实际上并没有工作,因为你没有模拟ajax调用(所以它们失败了),所以我无法证明上面的代码,但是这里是包含我的代码的更新版本:{{3 }。您可以在真正的解决方案中亲自尝试。