You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止KendoUI Scheduler导航事件触发自动服务器调用

KendoUI Scheduler 仅阻止导航时的自动服务器请求,保留日期切换

要实现只阻止导航触发的自动服务器调用,同时保留日期切换功能,不要直接在navigate事件中使用e.preventDefault()(它会完全阻断导航行为),可以通过拦截数据源的自动请求来实现:

核心思路

Scheduler导航时会自动触发数据源的read请求,我们只需要拦截这一次自动请求,转而执行自定义逻辑,最后手动触发read。

实现代码

$("#scheduler").kendoScheduler({
  views: [{ type: "weekTimeline" }],
  // 导航事件处理
  navigate: function(e) {
    // 获取切换后的日期范围
    const startDate = e.view.startDate();
    const endDate = e.view.endDate();
    const dataSource = this.dataSource;

    // 仅拦截本次导航触发的自动请求
    dataSource.one("requestStart", function(reqEvent) {
      // 取消自动发起的服务器请求
      reqEvent.preventDefault();

      // 执行自定义LoadData函数,完成前置操作
      LoadData(startDate, endDate, function() {
        // 自定义操作完成后,手动触发数据源读取
        dataSource.read({
          start: startDate.toISOString(),
          end: endDate.toISOString()
        });
      });
    });
  },
  dataSource: {
    transport: {
      read: {
        url: "/your-api-url",
        dataType: "json"
      }
    }
  }
});

关键说明

  • 使用dataSource.one("requestStart")绑定一次性事件,确保只拦截导航触发的那一次自动请求,不会影响其他手动触发的read操作。
  • 不阻断navigate事件的默认行为,因此Scheduler的日期切换、视图更新会正常执行。
  • 在自定义LoadData完成后,手动调用dataSource.read()并传入正确的日期参数,确保数据源加载对应时间段的数据。

内容的提问来源于stack exchange,提问作者pinale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:27:17