我正在使用 vue 制作一个 arc gis 驱动的应用程序,因为地图的中心可以根据用户位置进行更改,我将默认位置设置为一些道具,然后将它们传递到我的地图组件中,以便在地图组件中调用 mount()用于渲染的钩子。
我认为我非常接近正确地做到这一点,但是当我在控制台的地图组件中记录我的道具时,它说它们是未定义的。
我不确定我的应用程序代码有问题还是我的子组件代码有问题?
正如您在我的 app.vue 中看到的那样,我什至尝试传入纯整数来测试值,但它们仍然未定义。
应用程序.vue
<template>
<div id="app">
<web-map v-bind:centerX="-118" v-bind:centerY="34" />
<div class="center">
<b-button class="btn-block" @click="getLocation" variant="primary">My Location</b-button>
</div>
</div>
</template>
<script>
import WebMap from './components/webmap.vue';
export default {
name: 'App',
components: { WebMap },
data(){
return{
lat: -118,
long: 34
}
},
};
</script>
网络地图.vue
<template>
<div></div>
</template>
<script>
import { loadModules } from 'esri-loader';
export default {
name: 'web-map',
props:['centerX, centerY'],
data: function(){
return{
X: this.centerX,
Y: this.centerY
}
},
mounted() {
console.log(this.X,this.Y)
// lazy load the required ArcGIS API for JavaScript modules and CSS
loadModules(['esri/Map', 'esri/views/MapView'], { css: true })
.then(([ArcGISMap, MapView]) => {
const map = new ArcGISMap({
basemap: 'topo-vector'
});
this.view = new MapView({
container: this.$el,
map: map,
center: [this.X,this.Y], ///USE PROPS HERE FOR NEW CENTER
zoom: 8
});
});
},
beforeDestroy() {
if (this.view) {
// destroy the map view
this.view.container = null;
}
}
};
</script>