【问题标题】:how to select single value in vuetify table如何在 vuetify 表中选择单个值
【发布时间】:2021-09-14 16:13:10
【问题描述】:

我有一个 vuetify 表,我可以在其中选择稍后推送到数组的值。我的问题是我必须给表一个键才能选择/推送到数组。但是这个键会导致选择多行的问题。但我希望每个都是一个选择行。有人可以帮我解决这个问题吗?我有点坚持如何解决这个错误:我只是复制了我的表,因为问题在那里:

<v-col>
      <v-data-table
        v-model="selected"
        :headers="headers"
        :items="meetingTimes"
        item-key="date"
        show-select
        class="elevation-1"
      >

      </v-data-table>

axios 方法:

 getMeetingTimes() {
      var pageURL = window.location.href;
      var lastURLSegment = pageURL.substr(pageURL.lastIndexOf('/') + 1);
      axios.get("http://localhost:8080/api/meetingTime/findBy", {

        params: {
          meetingName: lastURLSegment,
        }

      })
        .then(response => (this.meetingTimes = response.data))

    },

【问题讨论】:

    标签: javascript typescript vue.js vuetify.js


    【解决方案1】:

    表示多个项目具有相同的item-key 值,其中具有相同item-key 的项目显示为在表格中选择(demo 1)。

    item-key 必须是唯一的以避免出现问题。您可以为数组中的每个项目添加一个id 属性,并从模板中删除item-key="date" 属性,因为"id"item-key 的默认值。

    您可以将 API 响应的数组 map 放入一个新数组中,并使用 id 添加的属性:

    let nextId = 0
    
    export default {
      methods: {
        getMeetingTimes() {
          axios.get('/api/data').then(response => {
            // map `resp.data[]` to new array items, adding `id` property
            this.meetingTimes = response.data.map(time => ({
              id: nextId++,
              ...time
            }))
          })
        },
      },
    }
    

    由于您将选定的会议时间发送到不允许额外的 id 属性的后端,您可以在发送之前删除该属性,再次通过映射:

    export default {
      methods: {
        sendSelectedTimes() {
          // map `selected[]` to new array, without `id` property
          const selectedTimes = this.selected?.map(time => {
            const { id, ...otherProps } = time
            return otherProps
          })
    
          console.log({ selectedTimes })
        }
      }
    }
    

    demo 2

    【讨论】:

    • 我明天会试一试,然后告诉你:) 我会投票给你的 cmets,所以你今天的努力不会白费,再次感谢
    • @haso 用我认为更适合您的用例的解决方案更新了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2020-04-06
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多