vue中select绑定多个值及数据回显

2,690 阅读2分钟
距离上篇文章已经快九个月了,我是不是堕落了。。 这篇文章主要是记录我在项目中遇到的一个小问题,其实说小也不小,在去年刚接触vue的时候,对于select如何绑定多个值这个问题一度让我不知所措。刚开始完全没接触过vue和elementUI直接上手,跟着element粘贴复制官网写着还挺顺利,突然某天后台需要在select选中时让我多传个值,我不知道怎么办了,官网上例子是下面这样的:


v-model只能是value的值,我完全被官网的例子限制住了(怪我太蠢)。

 1.拼接value

后来在群里问了问,说是可以改成这样的:value="item.value+item.label",想来大家应该也懂这个意思,为了在传值的时候更方便,可以把它改成这样:value="item.value+'/'+item.label",之后就可以很方便的这样value.split('/')[0]取值了。 

2.绑定索引

还有一种方法就是不绑定具体的值,而是去绑定索引值:value="index",在获取值的时候可以这样获取options[index].value.具体例子在这里

3.数据回显

以上两种方法都可以很好的解决select绑定多值的问题,但是我们不妨多想一点,在新增操作的时候可以这样,那么编辑的时候怎么回显呢?select会根据绑定值与某个option的value值是否相同来判断是否选中,在上述两个方法中,我们不可能为了这么一个操作让后台在数据库中多存一个拼接好的value或者一个索引,想必后台同学也不会愿意的。对于第一种方式,回显时只需要将从后台获取的数据拼接在一起就行,对于第二种方式,需要去进行循环对比,找出对应的索引值,然后进行赋值,具体代码在这里

 4.总结

这虽然是个挺常见的问题,但对于当时的我来说是个不小的问题,现在公司项目不那么急,抽空记录一下。这只是我自己的想法,如果您有更好的方法,不妨分享一下。