ドラッグ可能な外部イベントを含むarshawのフルカレンダーのui-calendarディレクティブを使用しています。FullCalendarを変更するngDialogモーダルからイベント情報(開始と終了)
カレンダー自体でイベントをドラッグしなくても、ポップアップダイアログでテキストボックスを使ってタイトルの編集、開始、終了ができます。私はモーダルにngDialogを使用していて、コントローラのスコープを通じてクリックされたイベントにアクセスできます。カレンダーのイベントタイトルは変更に応答しますが、開始時刻と終了時刻は変更されません。
モーダルで保存をクリックすると、更新された情報が特定のclientEventをidで見つけた関数($scope.updateEventInfo
)に渡してから、clientEventプロパティを更新します。
私は、新しいタイトルがカレンダーにレンダリングされますが、開始時間と終了時間がない(.fullCalendar('updateEvent', event)
)
fullCalendar UpdateEventはを呼び出します。
開始時刻と終了時刻の書式設定または再割り当てが必要な方法はありますか?
コントローラー:
$scope.updateEventInfo = function(clickedEvent) {
var newTitle = clickedEvent.title;
var newStart = clickedEvent._start;
var newEnd = clickedEvent._end;
var clientEvent = uiCalendarConfig.calendars.myCalendar.fullCalendar('clientEvents', clickedEvent._id);
clientEvent[0].title = clickedEvent.title;
clientEvent[0].start = newStart;
clientEvent[0].end = newEnd;
uiCalendarConfig.calendars.festivalLineup.fullCalendar('updateEvent', clickedEvent);
}
$scope.eventSources = [{
events: [],
color: '#428bca',
textColor: 'white',
overlap: false
}]
$scope.uiConfig = {
calendar: {
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay,agendaTwoDay,week'
},
defaultView: 'agendaDay',
height: 'auto',
editable: true,
droppable: true,
eventClick: function(clickedEvent) {
$scope.clickedEvent = clickedEvent;
$scope.openModal('EditCalendarEvent');
},
}
};
ngDialogコード:
<div class="modal-container">
<h4>{{clickedEvent.title}}</h4>
<form>
<div class="input-field">
<input id="eventTitle" type="text" ng-model="clickedEvent.title"/>
<label for="eventTitle">Event Title</label>
</div>
<div class="input-field">
<input id="startTime" type="text" ng-model="clickedEvent.start"/>
<label for="startTime">Event Start</label>
</div>
<div class="input-field">
<input id="endTime" type="text" ng-model="clickedEvent.end"/>
<label for="endTime">Event End</label>
</div>
</form>
<button type="button" ng-click="updateEventTimes(clickedEvent)">Save</button>
</div>