美文网首页
vue之父子组件传参

vue之父子组件传参

作者: 郭先生_515 | 来源:发表于2019-02-25 10:41 被阅读0次
    1. 父组件向子组件传值:
      步骤:
      在子组件中创建一个props属性,用以接收父组件传过来的值;
      父组件中注册子组件;
      在子组件标签中添加子组件props中创建的属性;
      把需要传给子组件的值赋给该属性。

    按照以上步骤,用代码实现效果:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>父组件向子组件传参</title>
        <script src="https://cdn.bootcss.com/vue/1.0.21/vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <parent></parent>
        </div>
        <template id="parent">
            父组件数据:{{msg}} <br />
            子组件获取到的父组件数据:<child :msg="msg"></child>          <!-- ②③④ -->
        </template>
    </body>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
            components: {
                parent: {
                    data() {
                        return {
                            msg: 'parent-data'
                        }
                    },
                    methods: {
                    },
                    template: '#parent',
                    components: {
                        child: {
                            data() {
                                return {
                                }
                            },
                            methods: {
                            },
                            props: ['msg'],          // ①
                            template: '<span>{{msg}}</span>'
                        }
                    }
                }
            }
        })
    </script>
    </html>
    

    (注:此文引入的 vue.js ,仅适用于vue的1.0版本,对于vue的高版本不支持。)

    1. 子组件向父组件传值:
      步骤:
      子组件中需要以某种方式例如点击事件的方法来触发一个事件;
      将需要传的值作为emit方法的第二个参数(第一个参数为方法名),通过子组件的事件,将参数发射出来;
      在父组件中注册子组件,并通过emit的第一个参数的方法名作为事件,然后用父组件的方法的来获取参数。

    示例代码:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcss.com/vue/1.0.21/vue.min.js"></script>
    </head>
    <body>
        <div id="app">
            <parent></parent>
        </div>
        <template id="parent">
            父组件获取到的数据:{{msg}}
            <child @emit="get"></child>          <!-- ③ -->
        </template>
        <template id="child">
            <div>{{msg}}</div>
            <input type="button" value="发射" @click="send" name="">     <!-- ① -->
        </template>
    </body>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
            components: {
                parent: {
                    data() {
                        return {
                            msg: ''
                        }
                    },
                    methods: {
                        get(msg) {
                            this.msg = msg
                        }
                    },
                    template: '#parent',
                    components: {
                        child: {
                            data() {
                                return {
                                    msg: 'child_data'
                                }
                            },
                            methods: {
                                send() {          // ②
                                    this.$emit('emit', this.msg)
                                                                    // 第一个参数:方法名     第二个参数:需要传给父组件的值
                                }
                            },
                            template: '#child'
                        }
                    }
                }
            }
        })
    </script>
    </html>
    

    希望此文,对你学习vue有所帮助!

    相关文章

      网友评论

          本文标题:vue之父子组件传参

          本文链接:https://www.haomeiwen.com/subject/izkwyqtx.html