<view class="mapView" id="myMapView" :mapData="mapData" :change:mapData="myMapViews.getMapData"></view>
</template>
<script>
import {
mapGetters,
mapState
} from "vuex"
import {
getPrivCity,
} from "@/util/validate.js"
import {getAction} from "@/api/mamage.js"
import {
mapDataMiXin
} from '@/mixins/mapDataMiXin.js'
export default {
name: 'Map',
mixins: [mapDataMiXin],
data() {
return {
mapData: null, // 地图数据
isMapReady:false, // arcgis 准备好了
}
},
computed: {
...mapState({
mainUnit: (state) => state.mainUnit, // 选中的单位数据
unitList:(state)=>state.unitList, // 所有单位数据
layerConfig:(state) => state.layerConfig, // 选中的资源数据
adminResource:(state) => state.adminResource, // 选中的行政资源
landTypeArr:(state) => state.landTypeArr, // 林地类型数据
monitoringDictLayer:(state) => state.monitoringDictLayer, // 活动图层
fireLevelData:(state) => state.fireLevelData, // 火险等级
}),
},
watch:{
// 选中单位数据监听
mainUnit:{
handler(newVal,oldVal){
if(newVal){
// 获取priv
this.getPriv()
// 所有设施设备
this.selectAllData()
}
},deep:true
},
// 所有城市数据
unitList:{
handler(newVal,oldVal){
this.setData(newVal,'unitList')
},deep:true
},
// 选中的资源数据
layerConfig:{
handler(newVal,oldVal){
this.setData(newVal,'layerConfig')
},deep:true
},
// 选中的行政资源
adminResource:{
handler(newVal,oldVal){
this.setData(newVal,'adminResource')
},deep:true
},
// 林地类型数据
landTypeArr:{
handler(newVal,oldVal){
this.setData(newVal,'landTypeArr')
},deep:true
},
// 活的图层
monitoringDictLayer:{
handler(newVal,oldVal){
this.setData(newVal,'monitoringDictLayer')
},deep:true
},
// 火险等级
fireLevelData:{
handler(newVal,oldVal){
this.setData(newVal,'fireLevelData')
},deep:true
},
},
methods: {
...mapGetters(['getCityBasic', 'getMainUnit']),
// 获取priv
getPriv(){
let that = this
let mainUnit = that.getMainUnit()
if(mainUnit){
let priv = getPrivCity(mainUnit.code,that.getCityBasic())
console.log("prive----",priv)
that.setData({priv:priv},'privData')
}
},
// 设置数据
setData(data,type){
let that = this
that.$nextTick(()=>{
let obj = {type:type,data:data}
setTimeout(()=>{
that.mapData = {...obj,timeTemp:new Date()}
},0.5*1000)
})
}
}
}
</script>
<script module="myMapViews" lang="renderjs">
import {
arcgisMiXin
} from '@/mixins/arcgis.js'
export default {
name: 'Map',
mixins: [arcgisMiXin],
data() {
return {
privs: null, // 边界线privs
deviceData: null, // 所有设施设备数据
layerConfigData: null, // 选中的资源数据
allCityData:[], // 所有城市数据
}
},
mounted() {
},
methods: {
// 获取从逻辑层传递过来的数据
getMapData(obj){
let that = this
console.log("传递过来数据",obj)
if(obj && obj.type){
switch(obj.type){
// 边界线要用的
case 'privData':
that.privs = obj.data.priv
console.log("that.privsthat.privs边界线要用的",that.privs)
// 添加城市边界线
that.addCountyBorder()
break
case 'unitList':
// 所有城市数据
that.allCityData = obj.data
break
case 'layerConfig':
// 选中的资源
that.layerConfigData = obj.data
// 控制资源图层显示隐藏
that.clusterLayerShowHide()
break
case 'deviceData':
// 所有设施设备数据
that.deviceData = obj.data
// 初始化资源图层
that.initCustomLayer()
break
case 'adminResource':
// 选中的行政资源
// 处理行政边界图层
that.dealBorderLayer(obj.data)
break
case 'landTypeArr':
// 林地类型数据
// 处理林地类型数据
that.dealLandTypeArr(obj.data)
break
case 'monitoringDictLayer':
// 活的图层数据
// 处理活的图层数据
that.delMonitoringDictLayer(obj.data)
break
case 'fireLevelData':
console.log("火险等级------",obj)
// 火险等级
that.dealFireLevelData(obj.data)
break
}
}
},
}
}
</script>
<style lang="scss" scoped>
.mapView {
width: 100%;
height: 100%;
}
</style> ```
- 发布:2024-01-15 14:14
- 更新:2024-05-16 14:41
- 阅读:301
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 专业版
HBuilderX类型: 正式
HBuilderX版本号: 3.99
手机系统: Android
手机系统版本号: Android 14
手机厂商: 华为
手机机型: 华为P40pro
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
当逻辑层watch监听有多个数据,都赋值给同一个对象,通过类型区分,在视图层通过类型处理接收到的数据,现在视图层接收的数据不全,有的类型的数据接收不到
当逻辑层watch监听有多个数据,都赋值给同一个对象,通过类型区分,在视图层通过类型处理接收到的数据,现在视图层接收的数据不全,有的类型的数据接收不到
预期结果:
当逻辑层watch监听有多个数据往视图层传递的时候,视图层要能正常接收逻辑层传递的数据
当逻辑层watch监听有多个数据往视图层传递的时候,视图层要能正常接收逻辑层传递的数据
实际结果:
当逻辑层watch监听有多个数据,都赋值给同一个对象,通过类型区分,在视图层通过类型处理接收到的数据,现在视图层接收的数据不全,有的类型的数据接收不到
当逻辑层watch监听有多个数据,都赋值给同一个对象,通过类型区分,在视图层通过类型处理接收到的数据,现在视图层接收的数据不全,有的类型的数据接收不到
bug描述:
当逻辑层有多个数据传递到视图层的时候,有的时候视图层接收不到逻辑层传递的数据
小嗨嗨 (作者)
没解决
2024-09-27 10:34