Javascript “访问”;这";模板中

Javascript “访问”;这";模板中,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我想在模板中动态创建地图图层。因此,我认为我需要访问模板中的vue实例 <template> <MglVectorLayer v-for="(layer, idx) in lLayers" :key="idx" :sourceId="'someid'" :source="somevectorsourcedata" :layerId="layer" :layer="this[layer]" <<<<&l

我想在模板中动态创建地图图层。因此,我认为我需要访问模板中的vue实例

<template>
  <MglVectorLayer
    v-for="(layer, idx) in lLayers"
    :key="idx"
    :sourceId="'someid'"
    :source="somevectorsourcedata"
    :layerId="layer"
    :layer="this[layer]"  <<<<< I need to get the computed propery (layer1 & layer2) here
  />
</template>

export default {
  data () {
    layers: ['layer1', 'layer2']
  },
  computed: {
   layer1 () {
     return (..somelayerdata..)
   },
   layer2 () {
     return (..someotherlayerdata..)
   }
  }
}

只需使用一种方法:

:layer=“getLayer(层)”
方法:{
getLayer(层){
返回此[层]
}
}

由于组件实例在
v-for
中作为
不可用,因此可以将其替换为
\u self

:layer="_self[layer]"
或者,如果指定的动态属性名称是数据,则可以使用
$data

:layer="$data[layer]"

这种模式需要改进。线索是必须引用一个动态计算的对象的名称。您可能只需要1个计算的层,它将处理您的所有层数据,并将处理结果存储在
项中,而不是有一个计算名称列表。然后,您可以循环查看
v-for
中的实际数据,而不是名称。@Dan这只是一个示例。在我的理解中,这个层在数据方面可能会有很大的不同,所以这是我的示例,动态引用计算名称仍然不是一个好的模式。只是让你知道。