Vuex如何跟踪索引并将其传递给组件?

时间:2018-11-17 12:26:28

标签: vue.js vuex

我有两个从vuex获取数据的组件。第一个组件是带有图像的滑块。当您单击图像时,第二个组件应显示有关每张图片的信息。如何跟踪索引并将其传递给第二个组件以显示正确的信息

这是我的商店:

sideSwiperItems: [
  {
    id: "001",
    smallImage: require("@/assets/jpg/sideMenu-01.jpg"),
    data: [
      {
        height: "100 ft",
        widht: "10 ft",
      },
    ],
  },
  {
    id: "002",
    smallImage: require("@/assets/jpg/sideMenu-02.jpg"),
    data: [
      {
        height: "200 ft",
        widht: "20 ft",
      },
    ],
  },

第一部分

swiper-slide.swiper__thumb-position(
        v-for='(item, idx) in this.$store.state.buildingData.sideSwiperItems' 
        :key='idx'  
        :class=`'slide-'+(idx+1)`
      ) {{item.smallImage}}

第二部分

div(
 v-for=`(item, idx) in this.$store.state.buildingData.sideSwiperItems`
 :key='idx'
)
 p.side__block-month
  | {{item.data.height}}
  | {{item.data.width}}

1 个答案:

答案 0 :(得分:1)

您必须将要传递的数据存储到第二个元素中。 例如,您要传递第一个组件的选定索引,然后必须将选定对象存储到存储中:

sideSwiperItems: [
 ...
],
selectedObject: null

您可以像这样轻松分配所选对象

swiper-slide.swiper__thumb-position(
        v-for='(item, idx) in this.$store.state.buildingData.sideSwiperItems'
        @click="onClick"
        :key='idx'  
        :class=`'slide-'+(idx+1)`
        ) {{item.smallImage}}

methods: {
 onClick: (item) => {
  this.$store.state.buildingData.selectedObject = item
 }
}

如果第一个元素和第二个元素位于同一组件中,则无需将所选对象分配到Vuex存储中即可执行此操作。只需使用组件的数据