2016-10-21 17 views
0

私はFullcalendarをはじめて使用しています。私は研究と問題解決のために過ごしたことがあり、うまくいかない問題を抱えています。 Ajaxコールの結果をループしてイベントを生成します。また、編集/削除機能を提供するために、ホバー上のイベントアイテムの上に表示されるレイヤーがあります。これはすべて正常に動作していましたが、静的なデータ(テスト中)で作業していましたが、今は動的にしました。Fullcalendar - ループ外のIDを取得する

eventMouseOver()がループの外側にあるため、idを定義できません。これは明らかですが、私には、ループの外側に定義された別の変数がイベントに説明を追加し、Ajax呼び出しのデータを使用して動作することもあります。ループの外側で定義された各説明は、異なるイベントでどこに配置する必要があります。

誰かが私のインライン関数呼び出しのidを取得するのを助けることができますか - editEventとdeleteEvent?

events: function(start, end, timezone, callback) { 

        $.ajax({ 
         url: 'inc/scripts/expenses-scripts.php', 
         type: 'post', 
         dataType: 'json', 
         data: { 
          // our hypothetical feed requires UNIX timestamps 
          start: start.unix(), 
          end: end.unix(), 
          getExpenses: true, // an option! 
          salonId: $('#globalSalonId').text(), // an option! 
         }, 
         encode: true, 

         success: function(doc) { 

          if(doc.success==true) 
          { 

           var events = []; 

           for(x=0; x<doc.event.length; x++) 
           { 

            events.push({ 
             title: doc.event[x].description, 
             start: doc.event[x].start, 
             editable: true, 
             backgroundColor: doc.event[x].backgroundColor, 
             eventStartEditable: true, 
             eventDurationEditable: true, 
             description: doc.event[x].title+' - '+doc.event[x].price, 

            }); 

           } 

           callback(events); 

          } 
         } 

        }); 

       }, 

      eventResize: function(event, delta, revertFunc, element) { 

       alert(event.title + " end is now " + event.end.format()); 

       if (!confirm("is this okay?")) { 
        revertFunc(); 
       } 

      }, 

      eventDrop: function(event, delta, revertFunc, element) { 

       alert(event.id + " was dropped on " + event.start.format()); 

       if (!confirm("Are you sure about this change?")) { 
        revertFunc(); 
       } 

      }, 

      // I lose the event.id here // 
      eventMouseover: function(event, domEvent, element) { 
       var layer = "<div id='events-layer' class='fc-transparent' style='position:absolute; width:100%; height:100%; top:-2px; text-align:right; z-index:100'> <a> <img border='0' style='padding-right:5px;' src='img/pencil.png' width='10' onClick='editEvent("+event.id+");'></a><a><img border='0' style='padding-right:5px;' src='img/invalid.png' width='10' onClick='deleteEvent("+event.id+");'></a></div>"; 
       $(this).append(layer); 
      }, 

      eventMouseout: function(event, domEvent) { 
       $("#events-layer").remove(); 
      }, 

      // ADD A DESCRIPTION TO AN EVENT // 

      // I have access to the event.description here though // 
      eventRender: function(event, element) { 
       element.find('.fc-title').append("<br/>" + event.description); 
      } 

のAjaxコールバックで戻ってくるデータは

while($row = $result->fetch_object()) 
     { 

      $data['event'][$x]['start'] = $row->expenseDate; 
      $data['event'][$x]['title'] = $row->expenseTitle;    
      $data['event'][$x]['id'] = $row->id; 
      $data['event'][$x]['category'] = $row->expenseCategory; 
      $data['event'][$x]['editable'] = 'true'; 
      $data['event'][$x]['backgroundColor'] = '#3399cc'; 
      $data['event'][$x]['eventStartEditable'] = 'true'; 
      $data['event'][$x]['eventDurationEditable'] = 'true'; 
      $data['event'][$x]['description'] = $row->expenseCategory; 
      $data['event'][$x]['price'] = '&pound;'.$row->expenseTotal; 
      $data['event'][$x]['allDay'] = false; 

      $x++; 

     } 
+0

は、あなたは自分の 'events.push'呼び出しでIDを設定することはできません使用できるようになりましたか? –

+0

はい@ stephen.vakil。そのように簡単です。 Youyに感謝) –

答えて

0

が、私はそれが使用できなくなって、私のイベント配列内のIDを持っていなかった

stephen.vakil @によって応答されます。コードを更新しました

...

events.push({ 

    id: doc.event[x].id, 
    title: doc.event[x].description, 
    start: doc.event[x].start, 
    editable: true, 
    backgroundColor: doc.event[x].backgroundColor, 
    eventStartEditable: true, 
    eventDurationEditable: true, 
    description: doc.event[x].title+' - '+doc.event[x].price, 

}); 

IDは

関連する問題