如何在我的对象中添加计算数组?

时间:2019-02-05 14:13:11

标签: vue.js

对于地图中的某个位置,我想像这样在我的对象中添加一个计算数组:

marker: L.latLng(33.901445, -5.532788),

实际数据:

Projects: [
project [0]:{
  lat : 10.0
  lng: -10.0
},
  project [1]:{
  lat : 15.0
  lng: -15.0  
},
 ],

我想要的结果:

Projects: [
project [0]:{
  lat : 10.0
  lng: -10.0
  marker : L.latLng(10.0, -10.0)
},
  project [1]:{
  lat : 15.0
  lng: -15.0
  marker : L.latLng(15.0, -15.0)
},
 ],

谢谢

2 个答案:

答案 0 :(得分:2)

我找到了这段代码,谢谢。

export default {
  computed: {
    NewObject() {
      return this.projects.map(project => {
        let p = project;

        p.marker = [{
          lat: project.lat,
          lng: project.lng,
        }];

        return p;
      });
    },
  }
}

在模板中:

<div class="col-md-4"  v-for="project in NewObject">
  <l-map :zoom="zoom" :center="project.marker[0]" @click="">
    <l-tile-layer :url="url" :attribution="attribution"></l-tile-layer>
    <l-marker  :lat-lng="project.marker[0]" @click=""></l-marker>
  </l-map>
</div>

答案 1 :(得分:0)

我认为您想要一个可以为您返回对象的简单方法。您在使用https://www.npmjs.com/package/vue2-google-maps

<template>
  <div id="app">
    <pre>{{projects}}</pre>
  </div>
</template>

<script>
export default {
  name: "App",
  methods: {
    setMarkerPosition(lat, lng) {
      return { lat: lat, lng: lng };
    },
    addMarkerPosition(project) {
      project.markerCenter = this.setMarkerPosition(project.lat, project.lng);
      console.log(project);
    }
  },
  mounted() {
    this.projects.forEach(project => {
      this.addMarkerPosition(project);
    });
  },
  data() {
    return {
      projects: [
        {
          lat: 10.0,
          lng: -10.0,
          markerCenter: null
        },
        {
          lat: 15.0,
          lng: -15.0,
          markerCenter: null
        }
      ]
    };
  }
};
</script>

编辑:如果您希望markerCenter是被动的,我认为您需要在开始时就将其包括在数据形状中。

编辑2:我的代码中有一个小错误,我对其进行了更新。