【发布时间】:2020-02-19 07:22:01
【问题描述】:
我是 Vue.js 的新手(使用 Nuxt.js),我想要实现的是拥有一个可以在任何地方重复使用并且符合 W3C 的 Select 组件。
在@Jasmonate 答案的帮助下,我设法创建了这个组件,它正在工作。但是value 属性在源代码中仍然可见,因此不符合 W3C。也许问题出在项目的其他地方?!
父组件
<custom-select
:options="options"
v-model="selectedOption"
></custom-select>
<span>Selected : {{ selectedOption }}</span>
<script>
data() {
return {
selectedOption: "A",
options: [
{ label: "One", value: "A" },
{ label: "Two", value: "B" },
{ label: "Three", value: "C" }
],
};
}
</script>
自定义选择.vue
<template>
<select :value="value" @input="clicked">
<option
v-for="option in options"
:key="option.label"
:value="option.value"
>
{{ option.label }}
</option>
</select>
</template>
<script>
export default {
props: {
value: {
required: true
},
options: {
type: Array,
required: true
}
},
methods: {
clicked($event) {
this.$emit("input", $event.target.value);
}
}
};
</script>
我阅读了那些文档页面:
还浏览了网络以找到自定义组件中的 v-model 示例,但它始终与输入标签有关。我发现的关于使用 v-model 进行自定义选择的唯一示例实际上并不是一个选择标签,例如 StackOverflow 上的 Vue Select 插件或 this thread。
【问题讨论】:
-
你有什么问题?您是否尝试创建一个在内部使用
<select>的自定义表单组件?如果是这样,您能展示一下您的尝试吗? -
您好,感谢您的快速回答,很抱歉我的母语不是英语,我可能没有很好地解释自己。我正在尝试仅创建自定义 Select 组件。我将编辑我的第一条消息以添加我尝试过的众多代码中的一个。
标签: vue.js html-select nuxt.js w3c-validation v-model