【发布时间】:2017-08-27 02:01:33
【问题描述】:
我在 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 页面代码如下。
TableView.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 导出默认块之外,即:
<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 但两者都无法正常工作)?
【问题讨论】:
标签: javascript vue.js vuejs2 handsontable