【问题标题】:Use a display value while preserving v-model binding in Vue在 Vue 中保留 v-model 绑定的同时使用显示值
【发布时间】:2021-08-11 12:02:56
【问题描述】:

对不起,如果这个很简单,但我就是想不通。我正在使用 Quasar Framework,但我认为这更像是一个 Vue 问题。

我有一个多选 UI 组件,以及一个我想作为选项显示的对象列表。 v-model 将绑定到当前选择的选项。

假设我想从作者列表中选择一位作者。组件调用如下所示:

<q-select
  v-model="currentAuthor"
  :options="authors"
  label="Select an Author..."
/>

问题是authors 包含对象,而不是字符串,例如

this.authors = [
  { first_name: 'Roald', last_name: 'Dahl', id: 1}, 
  { first_name: 'J.R.', last_name: 'Rowling', id: 2}, 
]

v-model 与原始对象一起使用只会在下拉列表中显示带有值的条目

[object Object]

在每个。

我不想将作者对象数组映射到字符串数组,因为选择时,我需要每个对象的 id 属性。

如何在仍使用v-model 绑定到对象的同时为下拉菜单设置显示值(类似于${author.first_name} ${author.last_name})?

【问题讨论】:

    标签: javascript vue.js quasar-framework v-model


    【解决方案1】:

    使用option-valueoption-label 将选项值和标签映射到对象键。

    <q-select
      v-model="currentAuthor"
      :options="authors"
      label="Select an Author..."
      option-value="id"
      :option-label="(item) => item === null ? 'Null value' : `${item.first_name} ${item.last_name}`"
    />
    

    【讨论】:

    • 是的!感谢一百万一直困扰我多年的人。我只需要option-label,我看不出option-value 是干什么用的?
    • option-value 用于将对象的特定键绑定到 v-model,而不是整个对象。与:emit-value="true" 一起使用或删除它,以适合您的方式使用。干杯!
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 2020-07-15
    • 1970-01-01
    • 2018-11-02
    • 2020-10-29
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多