2

我在这里遇到了很大的问题。我使用 ocLazyLoader 加载完整的日历,它运行良好,但是当我尝试包含 fullCalendar-scheduler 时,我在 JavaScript 中遇到了这个错误。

Uncaught TypeError: Cannot set property 'schedulerVersion' of undefined

看起来它无法$.fullCalendar在插件的源代码中设置变量等于。
以下是我实例化文件的方式:

resolve: {
    resources: function($ocLazyLoad) {
        return $ocLazyLoad.load([
            ASSETS.forms.multiSelect
        ])
    },fullCalendarScheduler: function($ocLazyLoad){
        return $ocLazyLoad.load([
            ASSETS.core.moment,
            ASSETS.extra.scheduler,
        ]);
    },
    fullCalendar: function($ocLazyLoad){
        return $ocLazyLoad.load([
            ASSETS.extra.fullCalendar
        ]);
    },
}

我也在控制器中传递了正确的值。

controller('AccueilCtrl', ['$scope', '$filter', 'fullCalendar', 'fullCalendarScheduler', function($scope, $filter, fullCalendar, fullCalendarScheduler) {

有想法该怎么解决这个吗?

4

2 回答 2

2

通过jQuery的$.getScript(url);方法动态加载日历文件时遇到了同样的问题,我遇到了这篇文章。感谢Nick发布您的解决方案!

更改加载顺序后,一切正常。我的加载顺序是:

1st - 加载所有 css

第二 - 按此顺序加载 js:

  • 时刻.min.js
  • fullcalendar.min.js
  • 调度程序.min.js
  • bootstrap.min.js
  • ...

希望这对其他人有帮助。

于 2017-06-01T00:17:14.753 回答
2

对于那些有这个问题的人,我找到了解决它的方法。我不知道这是否是正确的做法,但它确实有效。
Fullcalendar 需要一个特定的顺序来导入所需的文件。使用 OcLazyLoad,您可以使用files: []参数确定此顺序。前任:

fullCalendar: function($ocLazyLoad){
                return $ocLazyLoad.load({
                    files: [
                        appHelper.assetPath('js/fullCalendar/3.1.0/fullcalendar.min.css'),
                        appHelper.assetPath('js/scheduler/1.5.0/scheduler.min.css'),
                        appHelper.assetPath('js/moment.min.js'),
                        appHelper.assetPath('js/fullCalendar/3.1.0/fullcalendar.min.js'),
                        appHelper.assetPath('js/scheduler/1.5.0/scheduler.min.js')
                    ]
                });
            }

这样,我就能够按所需的顺序导入所需的文件。您还可以将 CSS 与资产中的 js 分开,然后以正确的顺序导入它。

于 2016-12-20T16:43:39.713 回答