【问题标题】:pass dynamic data-attribute to a dhtmlxScheduler将动态数据属性传递给 dhtmlxScheduler
【发布时间】:2021-04-18 07:15:54
【问题描述】:

是否可以通过数据属性将数据动态传递给 dhtmlxScheduler?

我正在尝试传递动态数据,特别是日期,然后用于阻止调度程序显示我尝试传递的日期之前的事件。 调度程序已经接收到api-urlapi-rootread-only 之类的数据,但是当我尝试使用data-attribute 添加更多数据时,我得到了undefined。我尝试使用.data().attr()。这是我迄今为止尝试过的:

Blade.php 模板

 <x-scheduler :api-url="route('portal.schedule.events', $project)"
              api-root="/portal/schedules"
              :read-only="true"
              :data-project-start-date="$projectStartDate"
/>

Scheduler.js

 const schedulerElement = $('#scheduler');
 const api_url = schedulerElement.data('api-url');
 const api_root = schedulerElement.data('api-root');

 const project_start_date = schedulerElement.attr('data-project-start-date');
 //const project_start_date = schedulerElement.data('project-start-date');

【问题讨论】:

  • Console.log(project_start_date)
  • 是的。这是未定义的......
  • console.log(schedulerElement)
  • schedulerElement 指的是实际的调度程序,因此它是一个大男孩,但我可以在数据集和属性下看到 api-root 和 api-url。不幸的是,找不到项目开始日期

标签: jquery laravel custom-data-attribute dhtmlx-scheduler


【解决方案1】:

是的,从技术上讲,您可以将“数据属性”添加到调度程序容器中(正如我所见,您正在尝试做这件事)。

我尝试使用纯 javascript(而不是 jQuery $attr 方法)重现您的问题,代码如下:


function customAddData(){
    var el = document.querySelector("#scheduler_here")
    el.dataset.projectStartDate = new Date()
}
scheduler.init("scheduler_here",new Date(2020,5,30),"week");

customAddData()  
var schedulerElement = document.querySelector("#scheduler_here")
var project_start_date = schedulerElement.dataset.projectStartDate;
console.log(project_start_date)

并且正确添加了data属性,下面是一个demo: http://snippet.dhtmlx.com/5/3fba66b31

顺便说一句,我可能会误解您到底应该做什么,但如果您只是不想在某个日期之前显示事件 - 您只需使用 Filter 功能即可: https://docs.dhtmlx.com/scheduler/filtering.html

【讨论】:

  • 关键是我想从我的数据库中动态检索 startProjectDate 并使用它,以便用户无法在调度程序中“滚动”超过该日期。假设用户可以看到项目开始前一周的过去,但不能及时回到更早的时间并看到之前的其他周......
猜你喜欢
  • 2017-11-23
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 2019-05-26
相关资源
最近更新 更多