Vue v-select 对象数组

Lin*_*inx 3 vue.js vuetify.js

我试图将对象数组绑定到 v-select,以便当用户选择一个选项时,我可以访问与该选项关联的多个数据点。但是,我只希望它在下拉列表本身中显示一个值,即名称。如果我使用 itemText 使其在下拉列表中正确显示,它只会将其绑定到该名称,而我无权访问与其关联的其余信息。

例如,这是我的对象数组:

    memberships = [{
     memberExpirationDate: (...),
     memberUsername: 'John Jones',
     membershipId: 234
     membershipProfileName: 'Sample Profile Name'
    }]
Run Code Online (Sandbox Code Playgroud)

这是我的 v-select:

    <v-select v-model="selectedMember"
       :items="memberships"
       item-text="membershipProfileName"
       filled
       required>
    </v-select>
Run Code Online (Sandbox Code Playgroud)

然后,当我想使用它时selectedMember,将其设置为“示例配置文件名称”而不是整个成员资格对象。我如何将值绑定到整个对象?

Mar*_*oup 7

return-object在 your 上使用propv-select似乎是返回整个对象的最简单方法,而不仅仅是返回所选成员的名称。

只需添加return-objectprop,每次都会返回整个对象,如下所示:

<v-select 
    v-model="selectedMember" 
    :items="memberships" 
    item-text="memberUsername"
    filled 
    return-object  ADD IT HERE
></v-select>
Run Code Online (Sandbox Code Playgroud)

这是一个演示:

new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  data: {
    selectedMember: {
      memberExpirationDate: '2/3/21',
      memberUsername: 'John Jones',
      membershipId: 234,
      membershipProfileName: 'Sample Profile Name'
    },
    memberships: [{
      memberExpirationDate: '2/3/21',
      memberUsername: 'John Jones',
      membershipId: 234,
      membershipProfileName: 'Sample Profile Name'
    }, {
      memberExpirationDate: '2/4/21',
      memberUsername: 'John Jones II',
      membershipId: 235,
      membershipProfileName: 'Sample Profile Name II'
    }, {
      memberExpirationDate: '2/5/21',
      memberUsername: 'John Jones III',
      membershipId: 236,
      membershipProfileName: 'Sample Profile Name III'
    }]
  },
})
Run Code Online (Sandbox Code Playgroud)
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">


<div id="app">
  <v-app style="padding: 30px;">

    <v-select v-model="selectedMember" :items="memberships" item-text="memberUsername" return-object filled></v-select>

    <pre>{{ selectedMember }}</pre>
  </v-app>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
Run Code Online (Sandbox Code Playgroud)