Javascript AngularJS和Fullcalendar:eventClick仅在第一次使用时有效

Javascript AngularJS和Fullcalendar:eventClick仅在第一次使用时有效,javascript,angularjs,fullcalendar,Javascript,Angularjs,Fullcalendar,我正在使用基于fullcalendar的Angular模块:以及ng bootstrap中的对话框模块。我将日历配置为显示一个对话框,用于编辑eventClick操作上的事件。它只能正常工作一次。关闭第一个对话框并再次单击任何事件后,不会显示新对话框。但当我点击页面上的任何其他链接时,所有想要的对话框都会一个接一个地显示出来,就像它们以某种方式排队一样 以下是我的控制器的代码片段: $scope.showEditVisitDialog = function (event) { var

我正在使用基于fullcalendar的Angular模块:以及ng bootstrap中的对话框模块。我将日历配置为显示一个对话框,用于编辑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中:

控制台中没有错误,我做错了什么


plunker上的代码:

与往常一样,如果有小提琴/plnkr可用,事情会变得更简单、更明显。您需要在$apply函数中调用
showEditVisitDialog

...
$scope.calendar = {
  editable: true,
  eventClick: function(){
    $scope.$apply(function(){
      $scope.showEditVisitDialog()
    });
  }
};
...

正在工作。

您需要在日历的uiConfig之前声明您的操作;)

我建议您首先尝试一下,看看您的
showEditVisitDialog
函数是否在每次单击日历时都被调用。如果不是这样,则问题出在日历单击事件中。否则,问题可能出现在已检查的解决方案中,正在调用函数。我将尝试删除resolve并检查它是否导致了问题(但我认为如果resolve是问题,它将抛出一些错误)。您所说的“如果不是这样,那么问题就出在日历单击事件中”是什么意思?我的意思是,如果您每次单击日历时都没有调用
showEditVisitDialog
,那么可能是日历在“排队”事件(但您似乎已经检查了这一点)。如果您能在jsfiddle/plnkr/jsbin中重现您的问题,可能会有所帮助。另外,尝试将AddEditVisitDialogController附加到您的帖子。也许里面藏着什么。我几乎删除了AddEditVisitDialogController中的所有内容。对话框关闭时,使用按钮ng click将此函数设置为:$scope.saveVisit=function(){Dialog.close();};我做了一些调试,发现在第一次执行之后,永远不会到达这一行:并且结果是。只有在我单击页面上的其他链接/按钮后,才会执行这些行。我在用JSFIDLE编写时遇到了问题,我将尝试tommorow。因此,解决方案没有解决,但我不知道为什么$dialog无法解决您的
patientId
visitId
。就好像这两个属性是在解析时卡住的期票一样。谢谢,它起作用了;-)。我不确定$scope.$apply做什么,但我稍后会读到。这也适用于angular strap的模态服务。这是怎么回事?