Vue.js onchange 使用 Base Select 组件
Vue.js onchange using Base Select component
我正在研究并尝试修改一段示例代码,以便从基础 select 输入子组件触发 @change 事件。
base组件如下
<template>
<div class="form-group">
<label>{{ label }}</label>
<select
class="form-control"
:class="{
'is-valid': validator && !validator.$error && validator.$dirty,
'is-invalid': validator && validator.$error
}"
@change="$emit('input', $event.target.value)"
>
<option
v-for="opt in options"
:key="opt.value"
:value="opt.value"
:selected="value === opt.value"
>
{{ opt.label || 'No label' }}
</option>
</select>
</div>
</template>
<script>
export default {
props: {
label: {
type: String,
required: true
},
options: {
type: Array,
required: true,
validator (opts) {
return !opts.find(opt => typeof opt !== 'object')
}
},
value: {
type: String,
required: true
},
validator: {
type: Object,
required: false,
validator ($v) {
return $v.hasOwnProperty('$model')
}
}
}
}
</script>
并且 child 组件具有引用
<BaseSelect
label="What do you love most about Vue?"
:options="loveOptions"
v-model="$v.form.love"
v-on:change="changeItem($event)"
/>
...
methods: {
changeItem (event) {
console.log('onChange')
console.log(event.target.value)
},
似乎该方法没有被命中,当我使用 select 输入而不是 BaseSelect[=26 时,它按预期工作=],所以我怀疑这里的设置中缺少或不太正确。
您正在发出 input
事件,但正在侦听 change
事件:
@change="$emit('input', $event.target.value)"
...
v-on:change="changeItem($event)"
我正在研究并尝试修改一段示例代码,以便从基础 select 输入子组件触发 @change 事件。
base组件如下
<template>
<div class="form-group">
<label>{{ label }}</label>
<select
class="form-control"
:class="{
'is-valid': validator && !validator.$error && validator.$dirty,
'is-invalid': validator && validator.$error
}"
@change="$emit('input', $event.target.value)"
>
<option
v-for="opt in options"
:key="opt.value"
:value="opt.value"
:selected="value === opt.value"
>
{{ opt.label || 'No label' }}
</option>
</select>
</div>
</template>
<script>
export default {
props: {
label: {
type: String,
required: true
},
options: {
type: Array,
required: true,
validator (opts) {
return !opts.find(opt => typeof opt !== 'object')
}
},
value: {
type: String,
required: true
},
validator: {
type: Object,
required: false,
validator ($v) {
return $v.hasOwnProperty('$model')
}
}
}
}
</script>
并且 child 组件具有引用
<BaseSelect
label="What do you love most about Vue?"
:options="loveOptions"
v-model="$v.form.love"
v-on:change="changeItem($event)"
/>
...
methods: {
changeItem (event) {
console.log('onChange')
console.log(event.target.value)
},
似乎该方法没有被命中,当我使用 select 输入而不是 BaseSelect[=26 时,它按预期工作=],所以我怀疑这里的设置中缺少或不太正确。
您正在发出 input
事件,但正在侦听 change
事件:
@change="$emit('input', $event.target.value)"
...
v-on:change="changeItem($event)"