DHX 调度程序未定义

DHX Scheduler undefined

我开始将 VueJs 3 与 TS 和组合一起使用 api。

我发现这个tutorial关于如何在 VueJs 中导入调度程序。

不幸的是,它没有完全涵盖我的情况,因此我发现了一些麻烦。

具体来说,我遇到了这个错误:

scheduler is not defined

在他们建议使用的评论中:

/*global scheduler*/
import 'dhtmlx-scheduler'

但是它再也找不到调度程序了:

TS2304: Cannot find name 'scheduler'.

IDE建议我这样导入:

import { scheduler } from 'dhtmlx-scheduler'

但是,即使在这种情况下,调度程序也是未定义的。

要将 dhtmlx-scheduler 与 TypeScript 一起使用,请确保除了 SchedulerStatic 类型之外还导入 dhtmlx-scheduler

import 'dhtmlx-scheduler'
import { SchedulerStatic } from 'dhtmlx-scheduler'

然后你可以像这样使用 window.scheduler:

const scheduler: SchedulerStatic = (window as any).scheduler
scheduler.init(/*...*)

基于docs的TypeScript SFC示例:

<template>
  <div ref="scheduler"></div>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import 'dhtmlx-scheduler'
import { SchedulerStatic } from 'dhtmlx-scheduler'

export default defineComponent({
  name: 'scheduler',
  props: {
    events: {
      type: Array,
      default: () => []
    }
  },
  mounted() {
    const scheduler: SchedulerStatic = (window as any).scheduler // eslint-disable-line
    scheduler.skin = 'material'
    scheduler.config.header = [
        'day',
        'week',
        'month',
        'date',
        'prev',
        'today',
        'next'
    ]

    scheduler.init(this.$refs.scheduler as HTMLElement, new Date(2020, 0, 20), 'week')
    scheduler.parse(this.$props.events)
  }
})
</script>

<style>
@import "~dhtmlx-scheduler/codebase/dhtmlxscheduler_material.css";
</style>