首页 / 浏览问题 / 三维GIS / 问题详情
supermap iClient3D for cesium 给父组件传值
13EXP 2023年04月23日
父组件: <ol-map ref="mainMap"></ol-map>

 this.$refs.mainMap.getGridArea()

子组件:<div id="cesiumContainer" class="map"></div>

子组件里用这样的方式展示的球体:

this.view = new Cesium.Viewer("cesiumContainer", {

        animation: false,  //动画控制不显示    

        timeline: false,    //时间线不显示

        fullscreenButton: false, //全屏按钮不显示

        infoBox: false

      });

点击绘制的polygon面想要调取父组件的方法如何调取呢,用了$parent和$emit都报错

1个回答

您好,

传值相关的方法属于vue本身的语法。

如果您需要调取,需要先了解您这边到底是2.0还是3.0。

2.0可以参考https://baijiahao.baidu.com/s?id=1623258793504616613&wfr=spider&for=pc

3.0可以参考https://blog.csdn.net/Gyh9421/article/details/126588248

4,151EXP 2023年04月24日
用的vue2.0,但是我这样写就报$emit是undefined  

this.view._selectedEntityChanged.addEventListener(function (entity) {

        if (entity) {

          let index = entity.id.lastIndexOf("\-");

          let pointName = entity.id.substring(index + 1, entity.id.length);

          let pointId = entity.id.substring(0, index);

          if (pointName == '乡镇街道' || pointName == '乡镇街道name') {

            bus.$emit("gridLabelId", pointId, pointName)

          } else {

            //是地图标签-控制建筑标签不能点击,并且不能触发事件

            this.$parent.getDialog(pointName, pointId) // ---这行报错Uncaught TypeError: Cannot read properties of undefined (reading '$parent')

          }

        }

      });

子组件在页面中在根组件中注册才能获取,其他的都获取不到。

所以要将包含 emit 的子组件放在<template><template>标签下<div>中的直接子结点位置。

这类JS问题可以查看博客https://blog.csdn.net/qq_37164093/article/details/107897363

非产品问题还是建议您这边仔细检查代码,debug,查看语法是否正确,找寻demo进行核对等。

...