• 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>
  • 相关阅读:
    GUI 之 JDialog弹窗
    GUI Swing 之 JFrame窗体
    GUI 键盘监听事件
    GUI 窗口监听事件
    GUI 鼠标监听事件,模拟画图工具
    shell编程
    Ubuntu20.04 Linux初识
    rlwrap的使用
    5个相见恨晚的Linux命令,每一个都非常实用
    Bash初识与常用命令
  • 原文地址:https://www.cnblogs.com/wjlbk/p/12633299.html
Copyright © 2020-2023  润新知