如何解决为什么我的 Stimulus JS 控制器会触发两次?
所以,我有一个安装了 webpacker、vue、turbolinks 和刺激 js 的 Rails 应用程序。
我遇到的问题是,即使控制器只导入一次,即使我暂时禁用 turbolinks,form <- survived ~ 1
nullModel <- glm.mids(form,family = binomial(link=logit),miceData)
pool(nullModel)
for (i in 1:5){
add1(nullModel[[i]],form,test="LRT")
}
函数和 initialize()
函数也会被调用两次。
这仅在我进行刷新时发生(即不是在我第一次访问页面时,而是仅在我执行页面重新加载时)。
奇怪的是,connect()
只被调用一次(当我离开页面时)
这很糟糕,因为我需要在初始化时修改 DOM,所以我添加了两次元素。 有人知道导致这种情况的原因和/或解决方案吗?
编辑:application.js 根据要求
disconnect()
组件/index.js
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
import "stylesheets"
import "controllers"
import "components"
控制器/index.js
import Vue from 'vue/dist/vue.esm'
import BootstrapVue from 'bootstrap-vue'
import TurbolinksAdapter from 'vue-turbolinks'
Vue.use(BootstrapVue)
Vue.use(TurbolinksAdapter)
const components = {}
const context = require.context("components",true,/_component\.vue$/)
context.keys().forEach(filename => {
const component_name = filename.replace(/^.*[\\\/]/,'').replace(/_component\.vue$/,'')
const component = context(filename).default
components[component_name] = component
})
document.addEventListener('turbolinks:load',() => {
const app = new Vue({
el: '#vueapp',mounted() {
let input = document.querySelector('[autofocus]');
if (input) {
input.focus()
}
},components: { ...components }
})
})
在每个文件中,如果我 import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
const context = require.context("controllers",/_controller\.js$/)
application.load(definitionsFromContext(context))
它只被记录一次...
仅在刺激控制器中 console.log
或 initialize
被打印两次
这只会在我重新加载页面时发生,而不是在我第一次访问时发生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。