Rails Flatpickr 控制器不想注册

问题描述

我在我的 rails 应用程序中扩展了刺激 flatpickr 控制器有困难。我的问题是为什么刺激 flatpickr 仅在我手动注册控制器时才起作用?我已按照“高级用法here 下的步骤操作。为了确认一下,我正在使用刺激 flatpickr,它在我手动注册时起作用。当我使用下面的代码时,flatpickr 按预期工作。

javascript/packs/application.js

import { Application } from 'stimulus'
import { deFinitionsFromContext } from 'stimulus/webpack-helpers'

const application = Application.start()
const context = require.context('../controllers',true,/\.js$/)
application.load(deFinitionsFromContext(context))

// import Flatpickr
import Flatpickr from 'stimulus-flatpickr'

// Import style for flatpickr
require("flatpickr/dist/flatpickr.css")

// Manually register Flatpickr as a stimulus controller
application.register('flatpickr',Flatpickr)

当我创建一个新的 flatpickr 控制器时,flatpickr 不显示。我正在重新创建 this 应用

javascript/controllers/flatpickr_controller.js

// import stimulus-flatpickr wrapper controller to extend it
import Flatpickr from 'stimulus-flatpickr'
import Rails from "rails-ujs";


// import a theme (Could be in your main CSS entry too...)
import 'flatpickr/dist/themes/dark.css'

// create a new Stimulus controller by extending stimulus-flatpickr wrapper controller
export default class extends Flatpickr {
  initialize() {
   //global options
    this.config = {
      enableTime: true,time_24hr: true
    };
  }
  connect() {
    //define locale and global flatpickr settings for all datepickers
    this.config = {
      locale: this.locale,altInput: true,showMonths: 2
    };

    super.connect();
  }

  // automatically submit form when a date is selected
  change(selectedDates,dateStr,instance) {
    const form = this.element.closest("form");
    Rails.fire(form,"submit");
  }

  get locale() {
    if (this.locales && this.data.has("locale")) {
      return this.locales[this.data.get("locale")];
    } else {
      return "";
    }
  }
}

javascript/vendor/rails.js

import Rails from "rails-ujs";
Rails.start();

javascript/vendor/stimulus.js

import { Application } from "stimulus";
import { deFinitionsFromContext } from "stimulus/webpack-helpers";
const application = Application.start();
const context = require.context("controllers",/.js$/);
application.load(deFinitionsFromContext(context));

javascript/vendor/turbolinks.js

import Turbolinks from "turbolinks";
Turbolinks.start();

javascript/packs/application.js

import "vendor/rails";
import "vendor/turbolinks";
import "vendor/stimulus";

views/layouts/application.html.erb

<head>

    <%= javascript_include_tag "application" %>
    <%= stylesheet_link_tag    'application',media: 'all','data-turbolinks-track': 'reload' %>
    <%= stylesheet_pack_tag 'application','data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application','data-turbolinks-track': 'reload',defer: true %>

</head>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...