gpt4 book ai didi

javascript - VueJS 中的 Handsontable,表格仅在页面重新加载时加载

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:34 25 4
gpt4 key购买 nike

我在 VueJS 单页应用程序中使用 Handsontable 和 vanilla javascript。使用以下监听器:

document.addEventListener('DOMContentLoaded', function() ...

该表仅出现在页面刷新时,而不是初始加载时。我也尝试使用:

document.addEventListener('load', function() ...

但表格根本不显示(如果我删除 DOMContentLoaded 监听器也不会显示)。 handsontable 网站上的一些示例,例如 https://docs.handsontable.com/0.18.0/demo-bootstrap.html使用 DOMContentLoaded 监听器,其他人不使用任何监听器。

VueJS 页面代码如下。

表格 View .vue:

<template>
<div id="example"></div>
</template>

<script>
import Handsontable from 'handsontable'
import 'handsontable/dist/handsontable.full.css'
export default {
name: 'TablesView',
data () {
return {
tableData: {}
}
},
created: function () {
this.populateHot()
},
methods: {
populateHot: function() {
document.addEventListener('DOMContentLoaded', function() {
var data = [
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
['2012', 10, 11, 12, 13, 15, 16],
['2013', 10, 11, 12, 13, 15, 16]
]
var container1 = document.getElementById('example')
var hot1 = new Handsontable(container1, {
data: data,
startRows: 2,
startCols: 5
})
})
}
}
</script>

我尝试将 Handsontable 代码移到 VueJS 导出默认 block 之外,即:

<script>
import ....
var hotData = []
export default {...
// update hotData with ajax loaded data
}
function initializeHandsOn() {...}
document.addEventListener('DOMContentLoaded', initializeHandsOn(), false)
</script>

但是 handsontable.js 抛出了一个错误:

Uncaught TypeError: Cannot read property 'insertBefore' of null(…)

关于如何最好地将 Handsontable 与 VueJS 集成有什么想法吗? (我尝试了 vue-handsontable 和 vue-handsontable-official 但都无法正常工作)?

最佳答案

您可以通过删除事件监听器来尝试:document.addEventListener('DOMContentLoaded' 并直接在mounted 上执行此代码,如mounted在 vue 中大致等同于 DOMContentLoaded,如下所示:

<script>
import Handsontable from 'handsontable'
import 'handsontable/dist/handsontable.full.css'
export default {
name: 'TablesView',
data () {
return {
tableData: {}
}
},
mointed: function () {
this.populateHot()
},
methods: {
populateHot: function() {
var data = [
['', 'Kia', 'Nissan', 'Toyota', 'Honda', 'Mazda', 'Ford'],
['2012', 10, 11, 12, 13, 15, 16],
['2013', 10, 11, 12, 13, 15, 16]
]
var container1 = document.getElementById('example')
var hot1 = new Handsontable(container1, {
data: data,
startRows: 2,
startCols: 5
})
}
}
</script>

关于javascript - VueJS 中的 Handsontable,表格仅在页面重新加载时加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com