VUE3项目中在onMounted函数初始化了cesium的界面const viewer = new Cesium.Viewer('cesiumContainer', {}),但是不能在其他函数里使用viewer,这个应该怎么解决呢?(我在VUE2里也是这么用的,并没有问题,把初始化代码放在setup函数里则页面加载不出来)
有用望采纳。
在Vue 3中,可使用ref来引用DOM元素或组件实例。在这种情况下,需要在setup函数中创建一个ref,并将其传递给Cesium Viewer的构造函数。然后从ref.value访问viewer对象以在其他函数中使用它。
例程源码如下
<template>
<div id="cesiumContainer" ref="cesiumContainer"></div>
</template>
<script>
import { onMounted, ref } from 'vue'
import Cesium from 'cesium'
export default {
setup() {
const cesiumContainer = ref(null)
let viewer
onMounted(() => {
viewer = new Cesium.Viewer(cesiumContainer.value)
})
function doSomethingWithViewer() {
// 使用viewer
viewer.camera.flyTo(/*...*/)
}
return {
cesiumContainer,
doSomethingWithViewer
}
}
}
</script>
在此示例中,在setup函数中创建了一个ref,并将其传递给Cesium Viewer的构造函数。在onMounted中,初始化viewer对象。最后,将cesiumContainer和doSomethingWithViewer返回到模板中,在模板中就可以使用了。