最初,在修改了事件的细节之后,我做了一个页面重新加载来显示修改的更改,并且它也是有效的.在这个方法中,我有空的$scope.events = [];数组,我从DB中检索条目之后填写.
但现在,我想避免该页面重新加载.所以,一旦事件的细节从模态窗口被修改,我使用$scope.events = []来清除$scope.events数组的内容.然后使用API调用,我再次在$scope.events数组中填充新的事件.这是正常的,因为列表视图显示修改的事件详细信息.但日历本身显示旧条目.例如,如果我从4月11日起至4月13日更改日期,那么4月11日的日历将显示事件,而列表视图显示修改后的数据,即4月13日.使用页面重新加载,更正此事件将在修改日期(4月13日)显示.
如何确保事件在日历上也被修改,没有重新加载页面?
我试过calendar.fullCalendar(‘render’);从DB获取新的条目后,但并不解决问题.
以下是一些代码:
最初我这样做是将数据发送到DB,然后重新加载页面来检索更新的数据.
$http.put(URL,的SendData).success(功能(数据){$window.location.reload();});
现在我想避免页面重新加载,所以我做了
$http.put(url,senddata).success(function(data){//$window.location.reload();//sends modified data to server $scope.events = []; //clear events array $http.get(url2).success(function(data){ //fetch new events from server,and push in array $scope.schedule = data; for(var i=0;i<data.length;i++) { $scope.events.push({ idx: data[i].idx,title: data[i].title,description : data[i].description,allDay: false,start: new Date(data[i].start),end: new Date(data[i].end),}); calendar.fullCalendar('render'); //Tried even this,didn't work } });
上面的代码将事件数组中的修改事件推送到列表视图中可见,但日历仍显示旧事件,直到页面重新加载.
而不是做:
$scope.events = []
尝试:
$scope.events.slice(0,$scope.events.length);
然后当您的服务器请求返回时,将每个项目单独添加到现有阵列中:
for(var i = 0; i
}
我建议这样做的原因是因为你所描述的声音听起来像日历可能会持续到旧的事件列表.日历可能不知道更新其引用,因此,让它保持相同的引用,但更改数组的内容.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。