首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据传递给v- data表中调用的组件。

将数据传递给v- data表中调用的组件。
EN

Stack Overflow用户
提问于 2019-10-22 11:15:55
回答 1查看 4.3K关注 0票数 4

我有一个v数据表,我在每个表中都添加了一个可扩展的div,作为组件使用。我不知道如何将数据从选定的v数据表传递给组件。我用的是单文件组件。

ScanGrid组件(父组件):

代码语言:javascript
复制
<template>
  <v-container>
    <v-card>
      <v-card-text>
        <v-layout row align-center>
          <v-data-table
            :headers="headers"
            :items="items"
            :hide-actions="true"
            item-key="id"
          >
            <template slot="items" slot-scope="props">
              <tr @click="props.expanded = !props.expanded">
                <td>{{ props.item.name }}</td>
                <td class="text-xs-right pr-5">{{ props.item.scanned }}</td>
                <td class="text-xs-right pr-5">{{ props.item.incoming }}</td>
                <td class="text-xs-right pr-5">{{ props.item.outgoing }}</td>
                <td class="text-xs-right pr-5">{{ props.item.unknown }}</td>
              </tr>
            </template>
            <div :value="items">
              <ScanGridChild></ScanGridChild>
            </div>
          </v-data-table>
        </v-layout>
      </v-card-text>
    </v-card>
  </v-container>
</template>

<script>
import ScanGridChild from "./ScanGridChild";
export default {
  name: "ScanGrid",
  props: {},
  components: {
    ScanGridChild
  },
  data: () => ({
    selected: [],
    items: [
      {
        id: 1,
        name: "Location 1",
        scanned: 159,
        incoming: 6,
        outgoing: 24,
        unknown: 4,
        test: "Test 1"
      },
      {
        id: 2,
        name: "Location 2",
        scanned: 45,
        incoming: 6,
        outgoing: 24,
        unknown: 4,
        test: "Test 2"
      }
    ],
    totalResults: 0,
    loading: true,
    pagination: {},
    headers: [
      {
        text: "Localisation",
        sortable: true,
        value: "name"
      },
      {
        text: "Paquets scannés",
        sortable: true,
        value: "scanned"
      },
      {
        text: "Paquets entrants",
        sortable: true,
        value: "incoming"
      },
      {
        text: "Paquets sortants",
        sortable: true,
        value: "outgoing"
      },
      {
        text: "Paquets inconnus",
        sortable: true,
        value: "unknown"
      }
    ]
  }),
  mounted() {},
  methods: {},
  watch: {}
};
</script>

<style lang="scss" scoped></style>

ScanGridChild组件(我希望在v-数据表项中使用扩展的div ):

代码语言:javascript
复制
<template v-slot:expand="props">
  <v-card flat>
    <v-card-text>{{ props.item.test }}</v-card-text>
  </v-card>
</template>

<script>
export default {
  name: "ScanGridChild",
  props: {
    value: {
      Type: String,
      Required: true
    }
  },
  async mounted() {
    await this.render();
  },
  computed: {},
  watch: {
    props: function(newVal, oldVal) {
      console.log("Prop changed: ", newVal, " | was: ", oldVal);
      this.render();
    }
  }
};
</script>

<style></style>

我在上1.5.19节课。我认为我的问题在于ScanGrid中的时隙范围,但我不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 11:40:43

您的代码几乎是正确的,您需要向父组件和子组件添加一些额外的修复程序。

父组件

代码语言:javascript
复制
<template>
  <v-container>
    <v-card>
      <v-card-text>
        <v-layout row align-center>
          <v-data-table
            :headers="headers"
            :items="items"
            :hide-actions="true"
            item-key="id"
          >
            <template slot="items" slot-scope="props">
              <tr @click="props.expanded = !props.expanded">
                <td>{{ props.item.name }}</td>
                <td class="text-xs-right pr-5">{{ props.item.scanned }}</td>
                <td class="text-xs-right pr-5">{{ props.item.incoming }}</td>
                <td class="text-xs-right pr-5">{{ props.item.outgoing }}</td>
                <td class="text-xs-right pr-5">{{ props.item.unknown }}</td>
              </tr>
            </template>
            <template slot="expand" slot-scope="props">
              <ScanGridChild v-bind:testName="props.item.test"></ScanGridChild>
            </template>
          </v-data-table>
        </v-layout>
      </v-card-text>
    </v-card>
  </v-container>
</template>

子组件中的

代码语言:javascript
复制
<template>
  <v-card flat>
    <v-card-text>{{ testName }}</v-card-text>
  </v-card>
</template>

<script>
export default {
  name: "ScanGridChildComponent",
  props: {
    testName: {
      Type: String,
      Required: true
    }
  }
};
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58503048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档