vue 父子组件传递数据

单向数据流:

数据从父级组件传递给子组件,只能单向绑定。

子组件内部不能直接修改从父级传递过来的数据。

解决方法: 可以使用data将父组件传递过来的数据拷贝一份存放起来,再修改拷贝的数据就可以了 

//用data来解决不能修改父组件传递的数据的问题,
                 // 我们新增一个number保存父组件传递过来的数据,这样就可以修改数据的值了
                  data:function(){
                        return {
                             number: this.count
                        }
                  },

  数据就可以修改了:

 methods:{
                      handleclick:function() {
                          this.number=this.number+2;
                          this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件
                      }
                  }

  我们使用$emit触发chang方法,在父组件的模版中监听chang方法,最后在Vue实例中调用

(1)

 this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件

  (2)

    <counter  :count="1" @change="handleIncreae"></counter>

  

 (3)

  var vm=new Vue({
               el:‘#shuju‘,
               data:{
                  total:3
               },
               components:{
                   counter:counter
               },
               methods:{
                   handleIncreae:function(step)  {
                       this.total+=step;
                   }

               }
           })

  完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>父子组件传值</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>
<body>
     <div id="shuju" >
            <counter  :count="2" @change="handleIncreae"></counter>
            <counter  :count="1" @change="handleIncreae"></counter>
            <div>{{total}}</div>
     </div>
     <script>
           var  counter={
                  props:[‘count‘],
                 //用data来解决不能修改父组件传递的数据的问题,
                 // 我们新增一个number保存父组件传递过来的数据,这样就可以修改数据的值了
                  data:function(){
                        return {
                             number: this.count
                        }
                  },
                  template:‘<div @click="handleclick">{{number}}</div>‘,
                  methods:{
                      handleclick:function() {
                          this.number=this.number+2;
                          this.$emit(‘change‘,2);//子组件向父组将传递参数,触发change事件
                      }
                  }
           };
           var vm=new Vue({
               el:‘#shuju‘,
               data:{
                  total:3
               },
               components:{
                   counter:counter
               },
               methods:{
                   handleIncreae:function(step)  {
                       this.total+=step;
                   }

               }
           })
     </script>
</body>
</html>

  效果:

2018-05-15   21:47:17

原文地址:https://www.cnblogs.com/guangzhou11/p/9043257.html

时间: 2024-09-29 05:59:33

vue 父子组件传递数据的相关文章

vue2中component父子组件传递数据props的使用

子组件使用父亲传过来的数据,我们需要通过子组件的 props 选项. 组件实例的作用域是孤立的,不能在子组件的模板内直接引用父组件的数据.修改父亲传过来的props数据的时候 父亲必须传递对象,否则不能修改. 现在是传递对象的语法 app.vue(父组件): <style scoped lang='stylus'> </style> <template> <div> <h1>我是app组件</h1> <zujian :data=

vue兄弟组件传递数据

在main.js里面设置data{eventHub:new Vue() } new Vue({ el: '#app', router, store, template: '<App/>', components: { App }, data:{ eventHub:new Vue() // 在main.js设置所有组件都能用调用 }, }) 我们再组件一设置一个事件调用组件二的事件,传递数据给组件二 <template> <div v-on:click="on()&q

vue父子组件传递参数

父向子组件传递 在父组件里子组件的模板里写上要传递的key和value <child  key='value'></child> 或者 <child  :key='value'></child> 如果是通过冒号绑定, value需要先在data里定义 子组件内添加props:['key'] 进行接收    props与data同级 子向父传递 子组件的方法内通过 this.$emit('name',value):进行传值 父组件通过@name=fn进行接收 

vue组件-#构成组件-父组件向子组件传递数据

组件对于vue来说非常重要,学习学习了基础vue后,再回过头来把组件弄透! 一.概念 组件意味着协同工作,通常父子组件会是这样的关系:组件 A 在它的模版中使用了组件 B . 它们之间必然需要相互通信:父组件要给子组件传递数据,子组件需要将它内部发生的事情告知给父组件. 在 Vue.js 中,父子组件的关系可以总结为 props down, events up . 父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息. 看看它们是怎么工作的.        

(尚043) vue_向路由组件传递数据+vue param和query两种传参方式

效果展示: ============================================================================ 应写成下图这种形式: :id为占位 现在是通过什么路径向路由组件传递数据的? 通过请求参数${message.id}传递的 请求参数有两种: 1).Param 2).Query  (?后面,类似于get) ================================================================

总结一下微信小程序中父子兄弟组件传递数据

常规的这种写法就是父组件在向子组件传递数据 子组件向父组件传递数据主要通过监听事件 比如like点赞功能触发了一个like事件 父组件通过绑定like事件来监听 对应事件: 原文地址:https://www.cnblogs.com/rmty/p/10914342.html

Vue父子组件通信实践

组件(Component)是Vue.js的核心部分,组件的作用域是孤立的,所以不能在子组件模板内直接引用父组件的数据,但是组件之间的通信是必不可少的.组件A在其模板中使用了组件B,A组件要向B组件传递数据,B组件要将其内部发生的事情告知A组件,那么A.B组件怎么进行通信呢? Vue.js父子组件的关系可以总结为props down,events up,父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息,它们的工作方式如下图所示: 父组件 - 子组件:父组件传值给子组

Vue父子组件及非父子组件如何通信

1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: 子组件通过props来接收数据: 方式1: 方式2 : 方式3: 这样呢,就实现了父组件向子组件传递数据. 2.子组件与父组件通信 那么,如果子组件想要改变数据呢?这在vue中是不允许的,因为vue只允许单向数据传递,这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的. 父组件: 3.非父子组件通信 如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现

vue父子组件之间传值

vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种vue-cli搭建的同理 父组件通过 v-bind:属性名(自定义的) = "要传递的数据" 子组件通过 props:["属性名"]  这个属性名就是父组件传递过来的数据信息 <div id="app"> <mod :abc=&qu