zoukankan      html  css  js  c++  java
  • vue-父子组件传值

    对于父子组件可以简单地理解为A组件中嵌入了B组件,则A组件称作父组件,B组件称为子组件。对于父子组件通信通常采用的是 props down(父组件向子组件传值), events up(子组件向父组件传值)两种方式。

    首先我们创建一个子组件Subcomponent.vue,在父组件中引入并注册使用,父组件代码:

    js: // 引入子组件
        import Subcomponent from '@/components/Subcomponent'
        export default{
            name: 'Parent',
            components:{
                // 注册子组件
                Subcomponent
            },
            data(){
                return{
                    parent:'父组件中的值'
                }
            }
        }
    wxml:

      <!-- 使用子组件 -->
      <Subcomponent :fromParent="parent"></Subcomponent>

    那我们先看下props down:

    父组件在使用子组件时,在子组件中动态绑定一个自定义属性(fromParent),对于子组件则是通过定义一个props属性去接收父组件传过来的值,这里的props是个数组props:['fromParent'],在子组件中使用该值和使用data中的数据方式一致。

    子组件代码:

    <template>
        <div>
            <p>我是子组件,右侧值为父组件传过来的值<-----{{fromParent}}</p>
        </div>
    </template>
    
    <script>
        export default{
            name: 'Subcomponent',
            props:['fromParent'],
            data(){
                return{
                    
                }
            }
        }
    </script>

    效果图如下

     接下来看看子组件如何向父组件传值,首先他们需要一个中间介质自定义事件,对于子组件来说需要触发某个事件进行传值,这里我们在子组件中写一个button按钮并绑定一个click事件SubcomponentFun,在该处理函数(SubcomponentFun)中通过$emit来触发一个自定义事件监听器(这里我定义为zdyParentfun),并传递一个参数(也就是自定义事件监听器对应响应事件中的形参params)。对于父组件就是在使用子组件时,通过v-on:自定义事件监听器名(这里和子组件中的自定义事件监听器名称一致zdyParentfun) 并绑定一个响应事件(handleSubcomponentFun),用于处理子组件传过来的值。具体的实现代码如下:

    子组件:

    <template>
        <div>
            <p>我是子组件,右侧值为父组件传过来的值<-----{{fromParent}}</p>
            <!-- 向父组件传值的按钮 -->
            <button type="success" @click="SubcomponentFun">改变父组件值</button>
        </div>
    </template>
    
    <script>
        export default{
            name: 'Subcomponent',
            props:['fromParent'],
            data(){
                return{
                    fromSubcomponent:'该值Subcomponent来自于子组件',
                }
            },
            methods:{
                SubcomponentFun(){
                    console.log(this.fromSubcomponent)
                    this.$emit('zdyParentfun',this.fromSubcomponent)
                }
            }
        }
    </script>

    父组件:

    <template>
        <div>
            <b>我是父组件   {{params}}</b>
            <!-- 子组件 -->
            <Subcomponent :fromParent="parent" v-on:zdyParentfun="handleSubcomponentFun"></Subcomponent>
            <input type="text" v-model="parent" />
        </div>
    </template>
    
    <script>
        // 引入子组件
        import Subcomponent from '@/components/Subcomponent'
        export default{
            name: 'Parent',
            components:{
                // 注册子组件
                Subcomponent
            },
            data(){
                return{
                    parent:'父组件中的值',
                    params:"" 
                }
            },
            methods:{
                handleSubcomponentFun:function (params){
                    this.params = params
                    console.log(params)
                }
            }
        }
    </script>

    效果图如下

    当你微笑的时候,全世界都会对你微笑。
  • 相关阅读:
    SQLSERVER走起微信公众帐号已经开通搜狗微信搜索
    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
    恢复SQL Server被误删除的数据(再扩展)
    Windows server 2012 添加中文语言包(英文转为中文)(离线)
    SQL Server技术内幕笔记合集
    将表里的数据批量生成INSERT语句的存储过程 增强版
    在SQL2008查找某数据库中的列是否存在某个值
    SQLSERVER走起 APP隆重推出
  • 原文地址:https://www.cnblogs.com/liruoruo/p/10475637.html
Copyright © 2011-2022 走看看