jquery fullcalendar将字符添加到标题输出

时间:2018-03-15 13:51:57

标签: jquery fullcalendar

我有一个fullcalendar的实现,它使用SQLExpress来存储事件。我想做的是。

  1. 如果满足某个条件。我想在事件标题前加上字符。这些需要显示在 主日历显示。
  2. 示例:我在添加事件对话框中有一个下拉列表,该对话框名为"付款类型"选择"私人支付"或"保险"

    调用事件渲染时,我有以下代码:

    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/

    感谢您的期待!

    约翰

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/eventRenderhttps://fullcalendar.io/docs/eventDataTransform

你的JSFiddle实际上并没有工作,因为你没有模拟ajax调用(所以它们失败了),所以我无法证明上面的代码,但是这里是包含我的代码的更新版本:{{3 }。您可以在真正的解决方案中亲自尝试。