我想将自定义属性绑定到选项选择菜单。
<option>
标记的属性只有selected="selected"
<template>
<div>
<select>
<option v-for="" v-bind:selected="[condition ? selected : notSelected]" value="">{{ resource.xprm_name }}</option>
</select>
</div>
</template>
data: {
selected: "selected",
notSelected: ""
}
这不起作用,但是如果我将v-bind:selected
更改为v-bind:class
,那么它会收到相应的类,因此逻辑正在运行,但不会使用selected
属性。
是否可以使用此类自定义属性?
答案 0 :(得分:40)
您可以使用v-model
在选择框中选择默认值:
标记:
<div id="app">
<select v-model="selected">
<option value="foo">foo</option>
<option value="bar">Bar</option>
<option value="baz">Baz</option>
</select>
</div>
查看型号:
new Vue({
el: "#app",
data: {
selected: 'bar'
}
});
这是JSFiddle:https://jsfiddle.net/Lxfxyqmf/
答案 1 :(得分:0)
html:
<div id="myComponent">
<select v-model="selectedValue">
<option
v-for="listValue in valuesList"
selected="selectedValue = listValue"
:value="listValue.id"
>
@{{listValue.name}}
</option>
</select>
<span>Chosen item: @{{ selectedValue }}</span>
</div>
js:
var app = new Vue({
el: '#myComponent',
data: {
selectedValue: 'two',
valuesList: [
{name: 'One', id: 1},
{name: 'Two', id: 2},
{name: 'Three', id: 3},
]
},
答案 2 :(得分:0)
如果您使用的是组合 API
<template>
<div class="select">
<select v-model="selectedValue">
<option value="abc">
abc
</option>
<option value="cba">
cba
</option>
</select>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const analyticsDays = ref('cba');
return { analyticsDays };
},
};
</script>
答案 3 :(得分:0)
我创建了一个可重用的 select 组件,它也将 modelValue 发送到父组件。
如果您查看第一个选项标签,您会看到我如何使用 props 创建默认值。
BaseSelect.vue(子组件)
<template>
<label v-if="label">{{ label }}</label>
<select
class="field"
:value="modelValue"
v-bind="{
...$attrs,
onChange: ($event) => {
$emit('update:modelValue', $event.target.value);
},
}"
>
<option value="" disabled>{{ defaultValue }}</option>
<option
v-for="option in options"
:key="option"
:value="option"
:selected="option === modelValue"
>
{{ option }}
</option>
</select>
</template>
<script>
export default {
props: {
label: {
type: String,
default: ""
},
defaultValue: {
type: String,
default: "Select an item of the list",
required: false
},
modelValue: {
type: [String, Number],
default: "Otros"
},
options: {
type: Array,
required: true
},
},
};
</script>
父组件
<BaseSelect
label="Asunto"
defaultValue = "Selecciona un asunto"
v-model="contactValues.asunto"
:options="asuntos"
/>
请注意,您必须在 data() (v-model) 中正确接收此值