2014-11-02 28 views
0

我有装入fullcalendar的事件对象。每个事件都有一个自定义的resources数组字段,用于显示事件的用途。装货很好。用户可以点击该活动,eventClick通过resources向我发送活动。我打开一个对话框进行编辑。保存对数据库的更改后,我想使用updateEvent来更新日历。我用来更新的对象包含完整的resources数组,并且所有对象都可以正常更新。FullCalendar事件在renderEvent或updateEvent后会丢失用户数据

这里的问题:现在,当我在同一个事件单击重新编辑,由eventClick返回的事件有即所有resources元素缺少设置为0。resources数组的长度。

想到也许我没有更新'原始对象',所以试过removeEvents后跟renderEvent,但得到了完全相同的行为。

我错过了什么?

btw,使用fullCalendar 1.6。我可以重新加载日历,这很好,但我不想让它闪烁并意味着不必要的字节。

更新 所以,如果我用appointment.resources = angular.copy(appointment.resources)然后一切正常。我不清楚为什么。是因为附加的资源来自角度$资源,并且当刷新对前一个对象的引用无处指向?

回答

0

我认为这可能是一个参考问题。

当您创建一个fullCalendar事件时,它将对象包装为一个新事件。 所以,如果你这样做:

var myEvent = {id: 1, title: "MyTitle", resources:[1,2,3], start:moment()}; 
$.('#calendar').fullCalendar('renderEvent', myEvent); 

它创建另一个对象,与像备份,具体方法等一些特定的属性...你可以访问该对象:

var fcEvent = $.('#calendar').fullCalendar('clientEvents', myEvent.id); 

但现在:

fcEvent.resources != myEvent.resources 

无论如何,很难确切知道没有一段代码的问题。有可能创建一个Plunker?您可以使用我的public Skeleton for ui-calendar