Javascript 从ngDialog模式修改完整日历事件信息(开始和结束)

Javascript 从ngDialog模式修改完整日历事件信息(开始和结束),javascript,angularjs,fullcalendar,momentjs,ui-calendar,Javascript,Angularjs,Fullcalendar,Momentjs,Ui Calendar,我正在使用ui calendar指令处理arshaw的可拖动外部事件的完整日历 我希望能够通过弹出对话框上的文本框编辑标题、开始和结束,而不必在日历上拖动事件本身。我使用ngDialog作为模式,可以通过控制器的作用域访问单击的事件。日历上的事件标题会响应更改,但开始和结束时间不会响应更改 当我在模式中单击“保存”时,我将更新的信息传递给一个函数($scope.updateEventInfo),在该函数中,我按id查找特定的clientEvent,然后更新clientEvent属性 然后我调用f

我正在使用ui calendar指令处理arshaw的可拖动外部事件的完整日历

我希望能够通过弹出对话框上的文本框编辑标题、开始和结束,而不必在日历上拖动事件本身。我使用ngDialog作为模式,可以通过控制器的作用域访问单击的事件。日历上的事件标题会响应更改,但开始和结束时间不会响应更改

当我在模式中单击“保存”时,我将更新的信息传递给一个函数(
$scope.updateEventInfo
),在该函数中,我按id查找特定的clientEvent,然后更新clientEvent属性

然后我调用fullCalendar updateEvent(
.fullCalendar('updateEvent',event)

新标题将显示在日历上,但开始和结束时间不显示

是否有某种方式需要格式化或重新分配开始和结束时间

控制器:

    $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');
          },
        }
      };
对话代码:

<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>

{{clickedEvent.title}
活动名称
事件开始
事件结束
拯救

过去一周我一直在摆弄这个日历。我一直在做的更新特定事件的工作是从阵列拼接现有事件,并推送新更新的事件

$scope.saveEvent = function() {
    $scope.events.forEach(function(ev) {
        if (ev._id == $scope.selectedEvent._id) {
            $scope.events.splice($scope.events.indexOf(ev),1);
        }
    });
    $scope.events.push($scope.selectedEvent);
    $scope.closeModal();
};
我看到其他一些人也在使用同样的方法,其推理与日历实例和javascript引用有关(我不是专家)

编辑:

实际上,我误解了您使用的方法,可能是从过时的版本中提取了该示例

我可以通过以下方式更新事件以及日期和时间:
uiCalendarConfig.calendars.festivalLineup.fullCalendar('updateEvent',clickedEvent')

您只需将
“clickedEvent”
更改为
“clickedEvent[0]”

编辑两个:

好吧,我把它弄得一团糟,我确实意识到,是的,你必须将日期格式化为momentjs对象。大概是这样的:


var newStart=moment(clickedEvent.start,“MM/DD/yyyyy HH:MM”)
过去一周我一直在摆弄这个日历。我一直在做的更新特定事件的工作是从阵列拼接现有事件,并推送新更新的事件

$scope.saveEvent = function() {
    $scope.events.forEach(function(ev) {
        if (ev._id == $scope.selectedEvent._id) {
            $scope.events.splice($scope.events.indexOf(ev),1);
        }
    });
    $scope.events.push($scope.selectedEvent);
    $scope.closeModal();
};
我看到其他一些人也在使用同样的方法,其推理与日历实例和javascript引用有关(我不是专家)

编辑:

实际上,我误解了您使用的方法,可能是从过时的版本中提取了该示例

我可以通过以下方式更新事件以及日期和时间:
uiCalendarConfig.calendars.festivalLineup.fullCalendar('updateEvent',clickedEvent')

您只需将
“clickedEvent”
更改为
“clickedEvent[0]”

编辑两个:

好吧,我把它弄得一团糟,我确实意识到,是的,你必须将日期格式化为momentjs对象。大概是这样的:

var newStart=moment(单击edevent.start,“MM/DD/YYYY HH:MM”)