首页 > 其他 > 详细

笔记(三) Vue父子组件传值

时间:2019-01-31 16:39:53      阅读:149      评论:0      收藏:0      [点我收藏+]

父组件向子组件传递数据

Vue中的父组件要想向子组件传递值的化需要通过属性的方式传递

<body>
  <div id="root">
    <counter :count="1"></counter>
    <counter :count="2"></counter>
  </div>
  <script>
  var counter={
    props:["count"],
    template:"<div>{{count}}</div>"
  } 
  var vm=new Vue({
    el:"#root",
    components:{
      counter:counter
    }
  })
  </script>
</body>

就像这样 在父组件上绑定一个count属性,子组件通过props来接收count属性所传递的值,然后通过插值表达式插入到子组件内

当我们想操作传递过来的数据的时候,我们就要注意了父组件传递给子组件数据时,因为单向数据流的关系,子组件是不能直接修改传递的数据的那我们要怎么办呢?

var counter={
    props:["count"],
    data:function(){
      return {
        number : this.count
      }
    },
    template:"<div @click=‘handleClick‘>{{number}}</div>",
    methods:{
      handleClick:function(){
        this.number++
      }
    }
  } 

我们可以在子组件定义一个number来接这个count,我们直接去操作这个number就可以不影响父组件了

 

子组件向父组件传递数据

子组件向父组件传递数据是通过事件的方式,父组件通过监听这个事件,就可以获取数据了

handleClick:function(){
        this.number++
        this.$emit("change",1)
      }

我们通过$emit 向外触发一个事件,而且这个事件后面可以携带一个或者多个参数

然后我们在父组件绑定一个事件 ,这个事件名就是$emit向外触发的事件.

<div id="root">
    <counter :count="0" @change="handleChange"></counter>
    <counter :count="0" @change="handleChange"></counter>
    <div>{{total}}</div>
  </div>

然后我们去根组件里面绑定这个事件

handleChange:function(e){
        this.total+=e
      }

这个e就是前面change事件携带的参数,我们就完成了子组件向父组件传递数据

  

 

笔记(三) Vue父子组件传值

原文:https://www.cnblogs.com/baiyujingi/p/10342323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!