<template> <select v-model="val"> <option>A</option> ... </select> </template> <script> export default { data(){ return { val: '' }; } }; </script> 作者:TerryZ链接:https://www.zhihu.com/question/306825754/answer/558858398来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
循环生成的 form elements 绑定 v-model 也使用一个数组就好了,例如:
<template> <p v-for="(item,index) in list"> <label v-text="item"></label> <select v-model="models[index]"> <option>A</option> ... </select> </p> </template> <script> export default { data(){ return { list: ['a', 'b', 'c', 'd'], models: Array(list.length).fill('') }; } }; </script>作者:TerryZ链接:https://www.zhihu.com/question/306825754/answer/558858398来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原理就是根据你的动态元素个数来生成相应长度的数组,指定 v-model 就是数组与数组间的下标一一对应,那么这个 models 里收集到的就是你所有动态生成元素的输入内容,当然不仅仅是数组,使用一个 Object 来收集也是可以,道理一样。
记录一下免得忘了