javascript - 仅在 FullCalendar 中的特定事件上允许 editable = true
问题描述
我试图让 FullCalendar 只允许event Resize
两个特定的 id 匹配,但我无法让它工作。
本质上,我是在一个组件中加载 FullCalendar。该组件有一个唯一的 ID,表示为日历上的一个事件。日历加载到页面后,如何确保仅设置editable: true
为该特定事件?请参阅下面的eventRender
我希望实现的伪代码
loadDataToCalendar: function(component, salesAppointments, resExceptions) {
let myEventid;
var ele = component.find('calendar').getElement();
$(ele).fullCalendar({
eventResize: function(event) {
component.set("v.startTime", event.start._d);
component.set("v.endTime", event.end._d);
component.set("v.showSaveButton", true)
},
eventRender: function(event) {
if (event.id === myUniqueIdHere) {
event.editable = true // this is what I'm trying to achieve
}
},
header: {
left: 'prev, next, today',
center: 'title',
right: 'month,agendaWeek,agendaDay',
},
eventOverlap: false,
defaultView: 'agendaWeek',
editable: false,
eventLimit: true,
eventSources: [salesAppointments, resExceptions],
timezone: 'local',
});
},
所以默认情况下,我想editable
是假的。当日历呈现并具有匹配的 ID 时,我需要将该特定事件设置为可编辑:true。我将如何实现这一目标?我试过使用eventRender
没有成功。
解决方案
您应该在生成事件的服务器端进行比较。
Fullcalendar(以及大多数此类程序)无法像您尝试做的那样“即时”更改内容-您通常必须首先在服务器上设置内容,并且这些程序可以根据您提供的设置进行渲染等.
所以,在你的事件中,你应该为你想要的设置 editable = true 。https://fullcalendar.io/docs/event-object
您不能(嗯,不容易 - 可能有一种非常迂回的方式,但我认为不值得尝试)在“渲染”中执行此操作,但如果您在服务器端进行检查,这很简单。
当我说“服务器端”时,我的意思是“进入全日历的数据”。正如您在“salesAppointments”和“resExceptions”中拥有这些,您可以在 javascript 中对其进行一些操作 - 但同样,不能在 fullcalendar 部分中进行操作 - 例如:
loadDataToCalendar: function(component, salesAppointments, resExceptions) {
let myEventid;
$(salesAppointments).each(function(event)){
if (event.id === myUniqueIdHere) {
event.editable = true;
}
}
$(resExceptions).each(function(event)){
if (event.id === myUniqueIdHere) {
event.editable = true;
}
}
var ele = component.find('calendar').getElement();
$(ele).fullCalendar({
eventResize: function(event) {
component.set("v.startTime", event.start._d);
component.set("v.endTime", event.end._d);
component.set("v.showSaveButton", true)
},
header: {
left: 'prev, next, today',
center: 'title',
right: 'month,agendaWeek,agendaDay',
},
eventOverlap: false,
defaultView: 'agendaWeek',
editable: false,
eventLimit: true,
eventSources: [salesAppointments, resExceptions],
timezone: 'local',
});
},
推荐阅读
- r - 通过剪贴板将数据从 R 直接复制到单词表中
- java - 接口类混淆
- https - urllib.error.URLError:
- html - 在 ionic 中每一行的开头将图像放在 ngFor 中
- html - 覆盖可滚动背景内容
- python - Tensorflow 2.0.0-beta1:'EagerTensor 对象不可调用'
- reactjs - React-Bootstrap modal 只取地图的最后一项
- pandas - 如何使用列上的多索引将 CRUD 矩阵更改为一个?
- javascript - 如果 json 字符串包含 utf 8 个字符,则响应仅在 java 中给出一半数据
- postgresql - Postgresql 10.x 如何配置Master - Master 复制