AngularJS和Fullcalendar: eventClick只在第一次工作
AngularJS and Fullcalendar: eventClick works only first time
我使用的是基于fullcalendar: https://github.com/angular-ui/ui-calendar的Angular模块以及来自ng-bootstrap的dialog模块。我将日历配置为在eventClick操作上显示用于编辑事件的对话框。它只能正常工作一次。在关闭第一个对话框并再次点击任何事件后,新对话框不会显示。但是当我点击页面上的任何其他链接时,所有想要的对话框都一个接一个地显示出来,就像它们在某处排队一样。
这是来自我的控制器的片段:
$scope.showEditVisitDialog = function (event) {
var editVisitDialogOpts = {
backdropClick: false,
templateUrl: 'views/addEditVisitDialog.html',
controller: 'AddEditVisitDialogController',
resolve: {
patientId: function () {
return event.patientId;
},
visitId: function () {
return event.id;
}
}
};
var editVisitDialog = $dialog.dialog(editVisitDialogOpts);
editVisitDialog.open().then(function (updatedVisit) {
//some action
});
};
$scope.calendar = {
height: 450,
editable: true,
header: {
left: 'month agendaWeek ',
center: 'title',
right: 'today prev,next'
},
eventClick: $scope.showEditVisitDialog
};
$scope.events = [];
$scope.eventSources = [$scope.events]
事件稍后在控制器中从REST获取。
在html:<div ui-calendar="calendar" config="calendar" ng-model="eventSources"/>
控制台没有错误,我做错了什么?
活塞代码:http://plnkr.co/edit/89sQfsU85zN4uxauFI2Y?p=preview
像往常一样,当有一个fiddle/plnkr可用时,事情会更简单、更明显。您需要将对showEditVisitDialog
的调用放在$apply函数中:
...
$scope.calendar = {
editable: true,
eventClick: function(){
$scope.$apply(function(){
$scope.showEditVisitDialog()
});
}
};
...
plnkr工作。
你需要在uiConfig for calendar之前声明你的函数;)
相关文章:
- Javascript:JSON请求仅在第一次工作
- 让jqGrid第一次工作
- show-hide只在ajax调用中第一次工作
- $(this) .prop() 只在第一次工作
- 复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
- 光滑的滑块只在Jquery Mobile中第一次工作
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- NG-CLICK功能仅在第一次工作
- jQuery Animation只是第一次工作
- jquery .load() 函数仅在第一次工作
- 加载ajax的Javascript只能在第一次工作
- 我的node.js http请求第一次工作,现在它显示了一些错误
- Jquery ajax调用只在第一次工作
- 在jquery 1.3.2中反复工作的Ajax只在1.7.1中第一次工作
- 对象搜索只在第一次工作
- addEventListener只在第一次工作
- 动画只在第一次工作
- AngularJS和Fullcalendar: eventClick只在第一次工作
- 无法调用$stateProvider两次来更新视图(它只在第一次工作)
- 调用js函数只能在jquery手机上第一次工作