遇到一个需求,关键词列表是用逗号分隔的字符串,最多三个关键词,为了在vue中对这个关键词列表进行编辑,可以将其定义为一个组件,组件中有3个input.用v-model将关键词列表绑定到组件上.input更新后产生input事件,更新列表值. 效果如图
组件代码如下
Vue.component('my-component', {
props : [ 'value' ],
methods : {
updateValue : function(){
this.$emit('input', this.tag1+","+this.tag2+","+this.tag3)
}
},
watch:{
tag1:function(){
this.updateValue()
},
tag2:function(){
this.updateValue()
},
tag3:function(){
this.updateValue()
}
},
data : function(){
return {
tag1:this.value.split(",")[0],
tag2:this.value.split(",")[1],
tag3:this.value.split(",")[2]
}
},
template : '<div> <input v-model="tag1"/> <input v-model="tag2"/> <input v-model="tag3"/></div>'
})
调用组件时代码如下
<div id="app">
<div>message is {{message}}</div>
<my-component v-model="message"></my-component>
</div>