将 id 和名称设置为 Vuetify select :items 的 JS 对象数组,以便您选择名称并将 id 设置为值

Mat*_*son 1 javascript vue.js laravel-5 vuejs2 vuetify.js

我有一组带有 id 和名称的对象:

Teams [
    { id: 1, name: 'team1' },
    { id:2, name: 'team2' } 
]
Run Code Online (Sandbox Code Playgroud)

有没有办法将名称传递给 vuetify 选择项,以便在选择名称时将对象的 id 设置为 v-model 值?:

<v-select
  v-model="???"
  :items="???"
  label="Teams"
></v-select>
Run Code Online (Sandbox Code Playgroud)

我猜这将在 created 方法中,但不确定从哪里开始。现在,我正在为应用程序初始获取时商店中的团队设置一个空的团队数组:

this.teams = this.$store.state.teams.teams
Run Code Online (Sandbox Code Playgroud)

我从 laravel 后端得到它作为一个集合,所以我正在考虑在那里转换为一个 id: name 键值对,但这似乎是不必要的。事实上,我只是在我的资源控制器的 index 方法中做最有说服力的查询:

$teams = Team::all();

return response()->json($teams);
Run Code Online (Sandbox Code Playgroud)

我知道如何使用普通选择来做到这一点,但不确定 vuetify 的 v-select:

<select id="categories" v-model="selectedValue">
    <option v-for="item in items" :value="item.id">{{ item.name }}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

小智 7

请这样做:

<html>

<head>
  <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>

<body>
  <div id="app">
    <v-app>
      <v-select v-model="data" :items="items" label="Teams" item-text="name"
   item-value="id"></v-select>

      <div>
        {{data}}
      </div>
    </v-app>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>
  <script>
    vue = new Vue({
      el: '#app',
      data: () => ({
        data: "",
        items: [{
            id: 1,
            name: 'one'
          },
          {
            id: 2,
            name: 'two'
          }
        ]
      })


    });
  </script>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)