[英]Default Select Option is Multiple Select is not visibly selected. (VueJs3)
我创建了一个 Select 选项,其中一个选项默认选中。 在下面的示例中,默认选择的选项在打开之前在 select 栏中明显选择。
<select v-model="formData.replyMethod">
<option value="" selected {{ $t(`files.homeName`)}}</option> # This is visibly selected
<option value="1" selected {{ $t(`files.foo`)}}</option>
<option value="2" selected {{ $t(`files.bar`)}}</option>
</select>
但是,当移动到 Computed Property & V-For 时,选择的选项被选中,但不可见(您现在必须打开列表才能看到),取而代之的是一个空白栏。
是什么导致这两种创建列表的方式在 output 中的差异?
示例 2:
<select v-model="formData.replyMethod">
<option v-bind:value="selectedOption.id" selected>{{ $t(selectedOption.name) }}</option>
<option v-bind:value="selectOpts.id" v-for="selectOpt in selectOpts">{{ $t(selectOpt.name) }}</option>
</select>
const selectedOption = computed(() => {
if(fooBarVariable) {
let opt = {id: 1, name: 'Foo'};
return opt
}
});
const selectOpts = [{ id: null, name: 'files.placeholder'},{id: 1, name: 'files.reply'},{id: 2, name: 'files.example'}]
当使用带有 select 输入的 v-model 时,不要使用 selected 属性为您的 select 输入设置默认值。
如果您通过selectedOption.id
为每个选项设置值,则只需键入您希望它在formData.replyMethod
中可见的选项的 id。
例如:
const selectOpts = [{ id: 1, name: 'files.placeholder'}]; const formData = { replyMethod: 1, };
<select v-model="formData.replyMethod"> <option v-for="option in selectOpts":value="option.id"> {{ option.text }} </option> </select>
这将为您在组件安装上的输入设置一个初始值,该值将在用户操作时被覆盖(与selected
属性的行为相同)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.