请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多个子组件使用父组件的传入的值,结果不正确。

我的代码是按照老师写的,先用props接收父组件的值,然后在data里面重新定义了一个值,修改了一个组件里面的值之后,另外一组件里面也会跟着变。

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="vue.min.js"></script>
</head>
<body>
<div id="app">
    {{msg}}
    <counter :count="obj"></counter>
    <counter2 :count="obj"></counter2>
</div>
<script>
    var counter  = {
        props:['count'],
        data : function () {
            return {
                user:this.count
            }
        },
        template : "<div @click='handleClick'>{{user}}</div>",
        methods : {
            handleClick:function () {
//                this.count ++;
               console.log('counter');
                this.user.name ='counter';
            }
        }
    };
    var counter2  = {
        props:['count'],
        data : function () {
            return {
                user:this.count
            }
        },
        template : "<div @click='handleClick2'>{{user}}</div>",
        methods : {
            handleClick2:function () {
//                this.count ++;
                console.log('counter2');
                this.name.name ='counter2';
            }
        }
    };
    var vm = new Vue(
        {
            el: '#app',
            data: {
                msg: "hello world",
                obj:{"name":"nhy"}
            },
            components: {
                counter,
                counter2,
            }
        }
    );
</script>
</body>
</html>

正在回答 回答被采纳积分+3

1回答

Dell 2018-12-10 23:37:08

你传递的是一个对象作为参数,是引用类型,需要做深拷贝,而不是浅拷贝

0 回复 有任何疑惑可以回复我~
  • 提问者 zhxs_nn #1
    怎么深拷贝呢老湿
    回复 有任何疑惑可以回复我~ 2018-12-10 23:42:00
  • Dell 回复 提问者 zhxs_nn #2
    JSON.parse(JSON.stringify(对象))
    回复 有任何疑惑可以回复我~ 2018-12-16 22:05:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信