• vue使用model改变数据后导致已经push到数组中的数据也改变


    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="../vue.js"></script>
        <style>
            table {
                border: 1px solid #ccc;
                border-spacing: 0;
            }
    
            th,
            td {
                 200px;
                border: 1px solid #ccc;
            }
        </style>
    </head>
    
    <body>
        <div id="app">
    
            英雄名称<input v-model="saveDate.personName" type="text">
            英雄技能 <input v-model="saveDate.personSkil" type="text">
            <button @click="save">save</button>
    
            <table>
                <thead>
                    <tr>
                        <th>序号</th>
                        <th>名称</th>
                        <th>技能</th>
                        <th>opration</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for="(item,index) in person">
                        <td>{{index}}</td>
                        <td>{{item.personName}}</td>
                        <td>{{item.personSkil}}</td>
                        <td> <button @click="del(index)">删除</button> </td>
                    </tr>
                </tbody>
            </table>
        </div>
        <script>
            new Vue({
                el: "#app",
                data: {
                    saveDate:{
                        personName: "",
                        personSkil: ""
                    },
                    person: [{
                        personName: "张三",
                        personSkil: "杀人"
                    }, {
                        personName: "李四",
                        personSkil: "防火"
                    }, {
                        personName: "赵六",
                        personSkil: "放屁"
                    }]
                },
                methods: {
                    save() {
                        this.person.push(this.saveDate)
                        console.log(this.saveDate)
                    },
                    del(index) {
                        this.person.splice(index, 1)
                    }
                },
            })
        </script>
    </body>
    
    </html>

    解决办法

    把model绑定的对象,更改成绑定变量,解决问题

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <script src="../vue.js"></script>
        <style>
            table {
                border: 1px solid #ccc;
                border-spacing: 0;
            }
            th,
            td {
                 200px;
                border: 1px solid #ccc;
            }
        </style>
    </head>
    <body>
        <div id="app">
            英雄名称<input v-model="personName" type="text">
            英雄技能 <input v-model="personSkil" type="text">
            <button @click="save">save</button>
            <table>
                <thead>
                    <tr>
                        <th>序号</th>
                        <th>名称</th>
                        <th>技能</th>
                        <th>opration</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for="(item,index) in person">
                        <td>{{index}}</td>
                        <td>{{item.personName}}</td>
                        <td>{{item.personSkil}}</td>
                        <td> <button @click="del(index)">删除</button> </td>
                    </tr>
                </tbody>
            </table>
        </div>
        <script>
            new Vue({
                el: "#app",
                data: {
                    personName: "",
                    personSkil: "",
                    person: [{
                        personName: "张三",
                        personSkil: "杀人"
                    }, {
                        personName: "李四",
                        personSkil: "防火"
                    }, {
                        personName: "赵六",
                        personSkil: "放屁"
                    }]
                },
                methods: {
                    save() {
                        this.person.push({personName:this.personName,personSkil:this.personSkil})
                    },
                    del(index) {
                        this.person.splice(index, 1)
                    }
                },
            })
        </script>
    </body>
    
    </html>
  • 相关阅读:
    apache的日志切割
    实现HTTPS--Apache+Openssl
    CentOS 6.x 编译安装LAMP
    apache的域名跳转
    模型生成过程中检测到一个或多个验证错误
    电商时代已经要过去了。接下来是零售
    电商时代已经要过去了。接下来是零售
    华为手机怎么安装Google
    华为手机怎么安装Google
    table不让td中文字溢出操作方法
  • 原文地址:https://www.cnblogs.com/wjlbk/p/12633299.html
Copyright © 2020-2023  润新知