我在Vue component中定义了2个<input>输入框,我想将这两个输入框的value用v-model分别绑定到父组件,但是我只找到了绑定一个的方法,分别绑定2个该如何操作呢?
如下代码不管在哪个输入框输入内容,searchText的值都会改变,相当于两个<input>的值绑定到了一个searchText上,用v-model如何将它们分开绑定呢?
<div id='app'>
<my-component v-model='searchText'></my-component>
<p>{{ searchText }}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
Vue.component("my-component", {
props:['value'],
template:`
<div>
<label for='input-one'>
name:
<input id='input-one'
v-bind:value='value'
v-on:input="$emit('input', $event.target.value)""></input>
</label>
<label for='input-two'>
age:
<input id='input-two'
v-bind:value='value'
v-on:input="$emit('input', $event.target.value)""></input>
</label>
</div>`
})
var app = new Vue({
el:'#app',
data:{
searchText:'start edit'
}
})
解决这个问题有几种方式,可以不需要v-model,通过props接收父组件2个值,$emit传递2个事件到父组件,也可以强行使用v-model采用 liximomo 的聚合多个值的方式。聚合方式代码如下: