vue 两层v-for循环之后,v-model绑定的所有input 表单,在修改的时候,全部都双向绑定了。

427 阅读1分钟
<!doctype html>
<html lang="en">
<head>    
    <meta charset="UTF-8">    
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">    
    <meta http-equiv="X-UA-Compatible" content="ie=edge">    
    <title>Document</title>    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">    
    <!-- 引入样式 -->    
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
    <div id="root" class="container">   
         <div class="list mb-2" v-for="(item ,index) in form.list":key="item+index">        
            <div class="item row row" v-for="(i,dex) in item.item":key="i+dex">           
                 <div class="col-2">{{i.name}}</div>            
                 <div class="col-8">
                    <input type="text" class="form-control" v-model="i.value">
                 </div>        
            </div>    
         </div>
    </div>
    <!-- 生产环境版本,优化了尺寸和速度 -->
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script type="text/javascript">    
        var lists = [{id:1,value:1,name:'频道1'},{id:2,value:2,name:'频道2'}];    
        new Vue({        
            el:'#root',        
            data(){            
                return {       
                  form:{                    
                    list:[
                        {
                            item:Object.assign({},lists)
                        },
                        {
                            item:Object.assign({},lists)
                        }
                    ]
                }
              }
            },        
            methods:{
            }    
        })
    </script>
</body>
</html>

以上是完整代码,现在发截图:

我使用了两层循环,第一次循环组,第二次循环每组的input个数。

因为第二层数据要通过接口来获取数据。

现在的问题就是在修改第一组第一个的时候,第二组的第一个也同步在修改。

请问这个是什么原因导致这样的?