• Vue 组件&组件之间的通信 之 子组件向父组件传值


    子组件向父组件传值:子组件通过$.emit()方法以事件形式向父组件发送消息传值;

    使用步骤:

    定义组件:现有自定义组件com-a、com-b,com-a是com-b的父组件;

    准备获取数据:父组件com-a要获取子组件data中的height属性;

    在子组件com-b中,需要用$.emit()方法将数据以事件的形式发送,$.emit('sendData', data, data…),红色的部分事件名可自定义,数据可传递多个;

    在父组件中使用子组件的地方 <com-b @自定义事件名='getData'></com-b> 监听子组件自定义的事件,并且在方法中获取数据;

    在父组件data定义height属性; 在父组件中实现getData(height)方法,方法参数是子组件传递的数据,例如这里直有一个height,然后为this.height赋值; 赋值完毕后就可以使用了;

    初始时在子组件中定义width和height

    通过一个button来进行实现子组件向父组件进行传值

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>子组件向父组件传值</title>
        <script type="text/javascript" src="../js/vue.js" ></script>
        </head>
        <body>
            <div>
                <father-component ></father-component>
                </div>
        </body>
        <template id="father-template">
            <div>
            <h2> 父组件</h2>
            myData:<span>{{name}},
                {{id}},
                {{user.username}},{{age}}
            </span><br />
                childData:<span> {{width}}</span><br /><span>height:{{height}}</span>
            
            <hr />
          <child-component  :id='id' :age='age' @sent-event='getData'></child-component>    
            </div>
        </template>
        <template id="child-template">
            <div>
                <p> 子组件</p>
                fatherData:<span >{{name}},{{id}},{{user.username}},{{age}}</span><br />
                myData:<span> {{width}}</span><br /><span>height:{{height}}</span><br />
                <button @click="setData">向父组件传送数据</button>
                
            </div>
    </template>
        <script>
            
            
            new Vue({
                
                data:{
                
            },
            
                components:{
                        "father-component":{
                            
                            methods:{
                
                getData(width,height){
                    this.width=width;
                    this.height=height;
                }
            },
                            data(){
                                return{
                                        id:"01",
                                    name:'perfect',
                                    
                                    user:{
                                    
                                        username:'博客园---perfect*',
                                        password:'123123'
                                        
                                    },
                                    age:18,
                                    0,
                                    height:0
                                }
                            },
                        
                            template:'#father-template',
                            
                            components:{
                                "child-component":{
                                    
                                    methods:{
                                        setData(){
                                            console.log(this);//这里的this指的是child-component实例
                                            this.$emit('sent-event',this.width,this.height);
                                        }
                                    },
                                    data(){
                                        
                                        return{
                                            100,
                                    height:50
                                        }
                                    },
                                    
                                    
                                    template:'#child-template',
                                
                                
                                
                                
                                props:{
                                    
                                    name:{
                                        type:String,
                                        //required:true,//必须进行传值
                                        
                                        default:'perfect*'//定义一个默认值
                                    },
                                    id:[Number,String],
                                       user:{
                                           type:Object,
                                           default:function(){
                                               return {username:'perfect***',password:'123123'}
                                           }
                                       },
                                       
                                       age:{
                                           type:Number,
                                       validator: function (value) {
                                           return value>=0;
                                       }
                                           
                                           
                                       }
                                }
                                }
                            },
                            
                            
                            
                        }
                    }
                    
                
                
            }).$mount('div');
        </script>
    </html>
  • 相关阅读:
    获得ip地理信息的几种方法
    设置 phoneGap/Cordova 3.4 应用程序启动动画闪屏 SplashScreen
    backbone实例01
    即使世界明天毁灭,我今天也要种下葡萄树
    真言真语
    美文美句
    25个实用的jQuery技巧和解决方案
    突袭HTML5之WebGL 3D概述
    敏捷开发之Scrum扫盲篇
    javascript中undefined和null的区别详解
  • 原文地址:https://www.cnblogs.com/jiguiyan/p/10778273.html
Copyright © 2020-2023  润新知