我使用的是基于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之前声明你的函数;)