javascript - 全日历事件渲染

标签 javascript jquery fullcalendar

我开始使用 fullcalendar,但遇到以下问题。我使用 codeigniter 将我的数据从 php 导入 JSON,使用具有 fullcalendar 的函数“eventSources”将多个数据导入 JSON 格式。现在我的问题是我需要应用属性“eventRender”,但只应用到我获得的数据之一,在这种情况下,我只想将它应用到“Calendar/get_alert”,但是我应用到所有数据,还有一些改变它的方法?我留下我的代码。

<script type="text/javascript">
	 $(document).ready(function(){
		 $('#fullcalendar').fullCalendar({
		    header: {
	              left: 'title',
		      center: 'agendaDay,agendaWeek,month',
		      right: 'prev,next today'
		    },
			  editable: true,
			  firstDay: 1,
			  selectable: true,
			  defaultView: 'month',
			
			  eventSources: [
                           '<?= base_url() ?>calendar/get_alert',
                           '<?= base_url() ?>calendar/get_Sales',
                           '<?= base_url() ?>calendar/get_purchases'
                          ],
        
   
                          eventRender: function(event, element, view){
                            var el = element.html();
                            element.html("<div style='width:90%;float:left;'>" +  el + "</div><div style='text-align:right;' class='close'><span class='glyphicon glyphicon-trash'></span></div>");
                
                            element.find('.close').click(function(){
                             if(!confirm("Delete event?")){
                               return false;
                             }else{
                             var id = event.id;
                             $.post('<?= base_url() ?>calendar/delete_alert',
                             {
                                id:id
                             },
                             function(data){
                              if(data == 1)
                                alert('Successfully deleted');
                              else
                                alert('Error deleted');  
                             });
                              $("#fullcalendar").fullCalendar('removeEvents', event.id);
                  }         
              });             
          }   
		    });		
	    });
    </script>

新代码,每个url的数据以JSON格式显示

<script type="text/javascript">
	 $(document).ready(function(){
		 $('#fullcalendar').fullCalendar({
		    header: {
	              left: 'title',
		      center: 'agendaDay,agendaWeek,month',
		      right: 'prev,next today'
		    },
			  editable: true,
			  firstDay: 1,
			  selectable: true,
			  defaultView: 'month',
			
			  eventSources: [
                            {
                             url: '<?= base_url() ?>calendar/get_alert',
                             customRender: true
                            },
                            {
                             url: '<?= base_url() ?>calendar/get_Sales',
                             customRender: false

                            },
                            {
                             url: '<?= base_url() ?>calendar/get_purchases',
                             customRender: false,
                            }
                            ],
        
   
                          eventRender: function(event, element, view){
                           if (event.customRender == true)
                            {
                            var el = element.html();
                            element.html("<div style='width:90%;float:left;'>" +  el + "</div><div style='text-align:right;' class='close'><span class='glyphicon glyphicon-trash'></span></div>");
                
                            element.find('.close').click(function(){
                             if(!confirm("Delete event?")){
                               return false;
                             }else{
                             var id = event.id;
                             $.post('<?= base_url() ?>calendar/delete_alert',
                             {
                                id:id
                             },
                             function(data){
                              if(data == 1)
                                alert('Successfully deleted');
                              else
                                alert('Error deleted');  
                             });
                              $("#fullcalendar").fullCalendar('removeEvents', event.id);
                  }         
              });  
            }           
          }   
		    });		
	    });
    </script>

最佳答案

一个简单的方法是这样的:

假设您为所有事件提供了一个额外的自定义 bool 属性。例如,我们可以将其称为“customRender”,设置为 true 或 false。您可以将来自“get_alert”源的所有事件设置为 render : true,而其他所有事件都为 false。

例如事件看起来像这样:

{
  start: "2017-01-01",
  end: "2017-01-03",
  //...other properties here...
  customRender: true
}

然后在 eventRender 方法中,只需将所有自定义逻辑包装在一个 if 语句中,以便它仅在事件将“customRender”设置为 true 时运行:

eventRender: function(event, element, view) {
  if (event.customRender == true)
  {
    var el = element.html();
    element.html("<div style='width:90%;float:left;'>" +  el + "</div><div style='text-align:right;' class='close'><span class='glyphicon glyphicon-trash'></span></div>");
    //...etc
  }
}

关于javascript - 全日历事件渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190045/

相关文章:

javascript - 在网格上,CheckboxModel 不适用于分组

javascript 或 css : How to Hide any Number followed by dot Prefix "1.text", "2.text".. ."30.text"来自标签内的文本

javascript - 有没有办法在 javascript 函数之前引用输入元素而不使用其 ID?

jquery - css 类在 jquery append 语句中无效

jquery - 使用 jQuery FullCalendar 的非公历日历

javascript - 如何实现将整天设置为 true 的重复事件?

javascript - Phaser.io 中的 setSize

javascript - 在 React-Native 中导航

javascript - 如何将事件添加到 javascript 运行时创建的 html 小部件

jquery - Fullcalendar 事件 ID 未定义 - 事件点击