4

AJAX呼び出しが行われた後、イベントをHTMLテーブルとしてレンダリングする必要があります。成功すると、テーブルHTMLSを取得します。ただし、タイトルでレンダリングすると、テーブルHTMLSが通常のテキストとして表示されます。私がそれをグーグルで検索したとき、私はそれをHTMLSとしてレンダリングするために以下のコードを使用する必要がある解決策を見つけました:

eventRender: function (event, element) {
element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());
}); 

しかし、コードに入れると、JSエラーが表示されます。このエラーが発生している理由がわかりません。私が理解するのを手伝ってください。以下のそのコードの完全なセクションを見つけてください:

  dayClick: function(start,allDay, jsEvent, view) {
   $('#calendar').fullCalendar('changeView', 'agendaDay');
  var date_clicked = $.fullCalendar.formatDate( start, "yyyy/MM/dd");
  var date_for_view = Date.parse(date_clicked);
  var date_for_view=new Date(date_for_view);
  $('#calendar').fullCalendar( 'gotoDate',date_for_view );
  $.ajax({
      url: "/admins/users/update_projects?date_selected="+date_clicked+"&uid="+'<%=params[:user]%>',
      type: 'GET',
      success: function (data, response, event, date) {
           $('#calendar').fullCalendar('renderEvent',
              {
                title: data,
                start: start
              },
      eventRender: function (event, element) 
              {
               element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());           
              }); },
      error: function () {
          $('#calendar').fullCalendar('renderEvent',
              {
                title: "No Tasks Scheduled Today",
                start: date_clicked              
              });      
               }
            });
  },
4

4 に答える 4

8

カレンダーを初期化するコードにeventRenderコールバックを追加する必要があります

// create fullCalendar
$('#calendar').fullCalendar({
    eventRender: function(event, element, view) {
         if (view.name == 'agendaDay') {
              element.find('span.fc-event-title').html(element.find('span.fc-event-title').text());
         }
    }
});

Ajax応答では、renderEventメソッドを呼び出して、2番目の引数としてイベントを渡すだけです。

//call the render event method
$('#calendar').fullCalendar('renderEvent', {
       title: 'My Event 2',
       start: '2012-11-25'
});

実例: http: //jsfiddle.net/bfz3J/1/

于 2012-11-25T10:35:02.813 に答える
1

FullCalendar(v2.6.1)の最新バージョンでは、htmlをagendaWeekおよびagendaDayに表示する際に問題が発生しました。これは私のために働いた:

  eventRender: function(event, element, view) {
    if (view.name === 'month') {
      element.find('span.fc-title').html(element.find('span.fc-title').text());
    } else if (view.name === 'agendaWeek' || view.name === 'agendaDay') {
      element.find('div.fc-title').html(element.find('div.fc-title').text());
    }
  },
于 2016-03-22T02:04:40.280 に答える
0

@ i123fr3の手法は引き続き適切ですが、fullcalendarのHTMLが変更されたため、機能しなくなりました。fullcalendarによって生成されたHTMLは、今のところ使用されてdivおり.fc-event-title、ではありませんspan

eventRender実装を次のように変更します。

if (view.name == 'agendaDay') {
  element.find('.fc-event-title').html(element.find('.fc-event-title').text());
}
于 2014-06-23T15:02:53.513 に答える
0

両方のタイプのイベントに関する私の解決策(30分未満および30分以上)

eventRender: function (event, element)
            {
                //hack for view html(not as text)
                element.find('.fc-event-title').html(element.find('.fc-event-title').text());
            },
eventAfterAllRender:function( view ) {
                $('.fc-event-time').each(function(){
                    $(this).html($(this).text());
                });
            },
于 2015-01-12T14:09:50.450 に答える