vue 父子组件之间传值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div id="app">
        
    </div>
    <script type="text/javascript" src="./vue.min.js"></script>
    <script type="text/javascript">
        // 全局组件
        // 第一个参数是组件的名字 第一个参数是options
        // 1.Parent  2.Child
        Vue.component('Child',{
            template:`
                <div>
                    <p>我是一个孩子组件</p>
                    <input type="text" v-model = 'childData' @input = 'changeValue(childData)'/>

                </div>
            `,
            props:['childData'],
            methods:{
                changeValue(val){
                    // 自定义的事件 一定通过this.$emit()去触发
                    // $emit(自定义的事件名,消息)
                    this.$emit('childHandler1',val)
                }
            }
        });
        // 父===》 子
        // 1.先给父组件中绑定自定义的属性
        // 2.在子组件中使用props接收父组件传递的数据
        // 3.可以在子组件中任意使用


        // 子 ===》 父

        // 1.在父组件绑定 自定义的事件  
        // 2.在子组件中 触发原生的事件 在函数中使用 $emit触发自定义的childHandler

        Vue.component('Parent',{
            data(){
                return {
                    msg:"我是父组件的数据"
                }
            },
            template:`
                <div>
                    <p>我是一个父组件</p>
                    <Child  :childData ='msg' @childHandler1 = 'childHandler'/>

                </div>
            `,
            methods:{
                childHandler(val){
                    console.log(val);
                }
            }
        });
        // 1.声子
        var App = {
            template:`
                <div>
                    <Parent />
                </div>
            `
            
        };
        
        new  Vue({
            el:'#app',
            data(){
                return {

                }
            },
            components:{
                // 2.挂子
                App
            },
            // 3.用子
            template:`<App />`
        });
    </script>
    
</body>
</html>

 

1 父组件向子组件属性传值:

template:` 2 <div> 3 <p>我是一个父组件</p> 4 <Child :childData ='msg' /> 5 6 </div> 7 父组件v-bind绑定,子组件正常用。
子组件向父组件事件传值:
四个事件:一个原生事件,一个子组件自定义事件,一个在子组件用this.$emit(事件,val)定义的事件,一个父组件自定义事件,原生事件触发子组件自定义事件,子组件自定义事件触发this.$emit定义的事件来触发父组件自定义事件

 

posted @ 2020-12-28 14:30  进击中的前端攻城狮  阅读(127)  评论(0)    收藏  举报