3

fullcalendar に基づく Angular モジュールを使用しています: https://github.com/angular-ui/ui-calendarと ng-bootstrap のダイアログ モジュール。eventClick アクションでイベントを編集するためのダイアログを表示するようにカレンダーを構成しました。1回だけでうまくいきます。最初のダイアログを閉じてイベントをもう一度クリックしても、新しいダイアログが表示されません。しかし、ページ上の他のリンクをクリックすると、必要なすべてのダイアログが、何らかの方法でキューに入れられているように 1 つずつ表示されます。

ここに私のコントローラーからのスニペットがあります:

 $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

4

2 に答える 2

4

いつものように、利用可能な fiddle/plnkr があると、物事はより単純で明白になります。showEditVisitDialog$apply 関数内に呼び出しを配置する必要があります。

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

働くplnkr

于 2013-05-19T16:20:57.853 に答える
2

カレンダーの uiConfig の前に関数を宣言する必要があります;)

于 2015-02-26T17:05:14.203 に答える