【问题标题】:Vue default selected option on object对象上的Vue默认选择选项
【发布时间】:2020-01-20 13:58:08
【问题描述】:

我知道v-model 数据应该与默认选项相同,但是当我有这样的设置时我会做什么:

data: function() {
    return {
      user: {
        usertype: {},
    }
}

<select v-model="user.usertype" class="btn btn-secondary d-flex header-input">
<option
v-for="(usertype, index) in usertypes"
:key="index"
:value="{value: usertype['short_desc_'+locale], max_user: usertype['max_user']}"
>{{usertype['short_desc_'+locale]}}</option>

我尝试添加另一个选项禁用value="",但它没有选择它作为默认值。更像,它没有显示。当我打开下拉菜单时,已经检查了第一项,但关闭时不显示。任何帮助表示赞赏:)

编辑:用户类型的结构

[{"id":1,"short_desc_de":"Mann","short_desc_en":"Men","min_user":1,"max_user":1,"created_at":"2019-09-19 08:07:06","updated_at":"2019-09-19 08:07:06"},{"id":2,"short_desc_de":"Frau","short_desc_en":"Woman","min_user":1,"max_user":1,"created_at":"2019-09-19 08:07:06","updated_at":"2019-09-19 08:07:06"},...]

【问题讨论】:

  • 你能把你的usertypes的结构也贴出来吗?
  • 它是一个空对象,仅用于存储数据,也可以使用数组。编辑:哦,usertypeS,是的,请稍等
  • 但是你的 v-for 循环当然不会产生任何输出。当user.usertype 未设置时,您希望列表包含什么?问题不是很清楚。
  • 不,我只是拼写不好, usertypeS 是一个 prop , usertype 只是一个空对象来存储所选选项。它确实会产生一个下拉菜单,但没有选定的默认选项起作用
  • 只是为了澄清:我想在访问页面时有一个默认值。现在,没有。它只是一个空白字段。

标签: javascript html css vue.js


【解决方案1】:

您添加一个额外的&lt;option&gt; 元素的方法很好,但不是设置value="",您需要匹配user.usertype 的默认状态,这是一个空对象。所以如果你设置属性:value="{}",你会得到想要的结果。

(在与技术无关的旁注中,您的第一个用户类型可能应该是“Man”而不是英语中的复数“Men”,或者您可能会更好地使用“male”/“female” )

new Vue({
  el: '#app',
  data: {
    user: {
      usertype: {}
    },
    usertypes: [{"id":1,"short_desc_de":"Mann","short_desc_en":"Men","min_user":1,"max_user":1,"created_at":"2019-09-19 08:07:06","updated_at":"2019-09-19 08:07:06"},{"id":2,"short_desc_de":"Frau","short_desc_en":"Woman","min_user":1,"max_user":1,"created_at":"2019-09-19 08:07:06","updated_at":"2019-09-19 08:07:06"}],
    locale: 'en'
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <select v-model="user.usertype" class="btn btn-secondary d-flex header-input">
  <option v-if="!Object.keys(user.usertype).length" :value="{}" disabled>please choose one</option>
  <option
  v-for="(usertype, index) in usertypes"
  :key="index"
  :value="{value: usertype['short_desc_'+locale], max_user: usertype['max_user']}"
  >{{usertype['short_desc_'+locale]}}</option>
  </select>
  <p>{{user.usertype}}</p>
</div>

【讨论】:

  • ^^,最后一点:数组呢?我现在了解了一个对象的要点,但是如果它是一个数组,你会如何处理这个问题?
  • 只使用一个空数组::value="[]"
猜你喜欢
  • 1970-01-01
  • 2017-12-18
  • 2017-03-11
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 2010-12-11
  • 2016-02-20
  • 1970-01-01
相关资源
最近更新 更多