首页 > 解决方案 > 是否可以为多个实例重用 flatpickr 窗格的 DOM?

问题描述

我们使用flatpickr来提供一个统一的界面来编辑日期。在一个例子中,有一个包含许多(数百)行的表,每一行都有一个日期输入,我们使用 flatpickr。

鉴于一次只会打开一个 flatpickr,是否有可能避免在 DOM 中创建数百个隐藏窗格,而是为所有这些窗格使用一个?

为每个实例创建的 dom 示例

标签: javascriptflatpickr

解决方案


所以我们在 AngularJS 应用程序中遇到了类似的问题。我们发现的解决方法是将 FocusHandler 添加到输入字段,在该处理程序中创建 flatpickr 实例,然后调用.open()该实例。

handleFocus = () => {
  const config = {...}
  this.flatpickrInstance = flatpickr(this.input, config);
  this.flatpickrInstance.open();
};

为了清理,我们还在输入字段中添加了一个 BlurHandler 以调用.destroy()保存的 flatpickr 实例。这里唯一的问题是这.destroy()将清除输入字段的值,因此我们需要在调用 destroy 后立即设置值,如下所示:

handleBlur = () => {
  const val = this.flatpickrInstance.input.value;
  this.flatpickrInstance.destroy();
  this.input.value = val
};

推荐阅读