zoukankan      html  css  js  c++  java
  • Vue子组件向父组件传递数据

    引言

    开始时我们先来用之前的父组件向子组件传递数据的知识完成下面这个问题

    1. 父组件如何向子组件传递一个方法呢?

    总结来说就一句话: 通过事件绑定机制,将父组件上的方法传递给子组件

    我们需要用到的东西

    1. vue实例,并在实例上定义一个方法
    2. 创建子组件
    // 1
     var vm = new Vue({
                el : "#app",
                methods: {
                    show(){
                        console.log(’我是父组件上的方法‘);
                    
                },
            })   
    
    // 2
    <template id="tem">
            <div>
                <h3>我是子组件</h3>
                // 点击button按钮,通过$emit实例api自定义方法
                <button @click="button">触发父组件传递过来的方法</button>
            </div>
        </template>
    
     Vue.component('tem-app',{
                template : '#tem',
                methods: {
                    button(){
    
                        // vm.$emit( eventName, […args] ) : 
                        // 触发当前实例上的事件
                        // 参数一,实例[父组件]定义的方法【事件名称】
                        // 参数二,可选的,子组件向父组件传递的数据,可以是多个,
                        this.$emit('func')
                    }
                },
            })
    // 3
    

    ok ,再来看看我们vue实例所要控制的区域

    <div id="app">
            // 父组件通过绑定了一个由子组件定义的方法,将自己身上的方法传递过去
            <tem-app @func="show"></tem-app>
    </div>
    

    这样我们就完成了,父组件向子组件传递一个方法的问题了

    我通过上面的例子再来看看

    1. 如何往父组件传递数据?
      • 这其实很简单
      • 通过 $meit方法的第二个参数,将数据传递过去,父组件方法接收子组件传递过来的数据即可
    var obj = {
        name : "张三",
        age : 18,
        sex : "男"
    }
    // vue实例
    var vm = new Vue({
                el : "#app",
                methods: {
                    show(obj){
                        // 父组件拿到子组件传递过来的数据
                        console.log(obj)
                    }
                },
            })    
    
    
    完整代码
    <body>
    
    
        <!-- 
            通过事件绑定机制,将父组件上的方法传递给子组件,
            子组件通过第二的参数将数据传递给父组件
         -->
        <div id="app">
    
            <tem-app @func="show"></tem-app>
    
        </div>
    
        <template id="tem">
            <div>
                <h3>我是子组件</h3>
                <button @click="button">触发父组件传递过来的方法</button>
            </div>
        </template>
    
    
        <script>
    
    
            var obj = {
                name : '张三',
                age : 12,
                sex : '男'
            }
    
            Vue.component('tem-app',{
                template : '#tem',
                data : function(){
                    return {
                        msg : '我是子组件上的数据'
                    }
                },
                methods: {
                    button(){
    
                        // vm.$emit( eventName, […args] ) : 
                        // 触发当前实例上的事件
                        // 参数一,实例[父组件]定义的方法
                        // 参数二,可选的,子组件向父组件传递的数据,可以是多个,
                        this.$emit('func',obj)
                    }
                },
            })
            
            var vm = new Vue({
                el : "#app",
                methods: {
                    show(obj){
                        // 父组件拿到子组件传递过来的数据
                        console.log(obj)
                    }
                },
            })    
            
        </script>
        
    </body>
    
    

    总结:
    1. 子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件
    2. 将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法
    3. 在父组件上绑定子组件$meit自定义的方法

  • 相关阅读:
    这篇文章把短线操作技巧以及交易原则讲透了!
    炒股老手的妙招——卖出在周K线的顶部
    连续多阳低吸买入法需要哪些条件?
    2个实盘案例带你了解南玻量态选庄股法!
    如何通过筹码分布判断一个股票要不要做?
    股票指标公式高手是怎么通过指标变现的?
    股票回踩均线是什么意思?
    定宽不定宽盒子的居中解决办法和外边距塌陷问题
    JS 数据类型
    JS 事件总结
  • 原文地址:https://www.cnblogs.com/ifon/p/11389781.html
Copyright © 2011-2022 走看看