vue之父子組件傳參

  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有所幫助!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 您將在本文當中了解到,往網頁中添加數據,從傳統的dom操作過渡到數據層操作,實現同一個目標,兩種不同的方式....
    itclanCoder閱讀 25,891評論 1 12
  • 組件(Component)是Vue.js最核心的功能,也是整個架構設計最精彩的地方,當然也是最難掌握的。...
    六個周閱讀 5,638評論 0 32
  • 首先 vue 組件化的一個框架。既然是組件化。那么一定存在組件和組件之間傳值的問題 在討論組件和組件怎么傳值的問題...
    人話博客閱讀 1,181評論 0 50
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,074評論 4 129
  • 漫步蓮城許昌 文/張超我 暑氣蒸籠蓋許昌 荷葉覆蓋在許都人的心上 偶爾一朵花 碧綠間舞蹈的新娘 蓮城許昌或許是一條...
    張超我閱讀 117評論 0 0