vue props传给子组件得不到值

父组件

 <index-map map-name="index-map" :pro-data="mapArr" :maker-data="listData" :marker-id.sync='markerId' :apply-flag.sync="statusModal" @marker-tap="markerTap"></index-map>

data() {

mapArr:[],

}

proChange(params){
  let mapArr;
  this.prolistData.forEach((item, i) => {
    if (item.areaid == this.params.proid) {
      mapArr = item;
    }
  });
  console.log("mapArr",mapArr);
},

子组件

props: ["makerData", "markerId", "mapName","proData", "applyFlag"],
watch: {
  proData: function(val, oldVal) {
    console.log("====41",val);
    if (val) { 
      this.mapPosition(this.proData);
    }
  },
},
 mapPosition(mapArr) {
    console.log(mapArr);
     this.map.centerAndZoom(new T.LngLat(mapArr.longitude, mapArr.latitude), mapArr.zoom);
  },

mapPosition 我在父组件改变mapArr 的值子组件mapPosition这个方法不执行

阅读 3.3k
2 个回答

父组件并没有改变myAttr呀,你重新let声明了一个。
并且因为你在父组件是直接赋值呀,那子组件中的数组对象还是原来的对象,但是父组件由于重新赋值已经和原来的数组对象无关了。

在子组件中新加一个变量

data(){
proDataNew:''
},
mounted(){
proDataNew = this. proData
},
watch:{
proDataNew(){
    //todo
}
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题