91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

父子組件間的數據傳遞

發布時間:2020-06-29 20:38:05 來源:網絡 閱讀:133 作者:梁十八 欄目:web開發

vue當中有個單向數據流的概念,也就是:父組件可以向子組件傳遞/修改參數(通過屬性的方式傳),但子組件不可以反過來修改父組件傳遞過來的參數!(因為怕子組件改了父組件引用類型的數據,可能會影響到其他組件)。那怎樣解決這個問題?可以復制給子組件自己的變量,然后子組件修改自己的變量啊!
這是父組件向子組件傳遞數據:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="./vue.js"></script>
    <!-- <script src="http://cdn.staticfile.org/vue/2.6.10/vue.common.dev.js"></script> -->
</head>
<body>
<div id="root">
    //加了:后引號里的內容就不是字符串了,而是js表達式,所以,就是數字類型了 <br>
    <counter :count="1"></counter>
    <counter :count="2"></counter>
</div>
<script type="text/javascript">
    //父組件是通過屬性的方式向子組件傳遞數據的

    //局部組件,需要注冊
    var counter = {
        props: ["count"], //子組件接收父組件傳過來的內容
        data: function() {
            return {
                number: this.count //從父組件接收count數據,復制到子組件自己data的變量number里
            }
        },
        /*template: "<div @click='handleClick'>{{count}}</div>",*/

        //既然子組件不應該修改父組件傳過來的值,那就修改自己的咯
        template: "<div @click='handleClick'>{{number}}</div>",
        methods: {
            handleClick: function() {
                /*//這種方式雖然可以實現,但會警告:不要直接修改父組件傳遞過來的屬性!
                this.count++ */

                //所以給子組件自己的number++,而不是父組件的count++
                this.number++
            }
        }
    }
    var vm = new Vue({
        el: "#root",
        components: {
            counter: counter
        }
    })
</script>
</body>
</html>

子組件向父組件傳遞數據:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="./vue.js"></script>
    <!-- <script src="http://cdn.staticfile.org/vue/2.6.10/vue.common.dev.js"></script> -->
</head>
<body>
<div id="root">
    //加了:后引號里的內容就不是字符串了,而是js表達式,所以,就是數字類型了 <br>
    //這個模版屬于根組件,所以handleInc方法也要寫在根組件 <br>
    <counter :count="3" @change="handleInc"></counter>
    <counter :count="2" @change="handleInc"></counter>
    <div>{{total}}</div>
</div>
<script type="text/javascript">
    //父組件是通過屬性的方式向子組件傳遞數據的

    //局部組件,需要注冊
    var counter = {
        props: ["count"], 
        data: function() {
            return {
                number: this.count 
            }
        },

        //既然子組件不應該修改父組件傳過來的值,那就修改自己的咯
        template: "<div @click='handleClick'>{{number}}</div>",
        methods: {
            handleClick: function() {
                this.number++
                //點擊子組件,觸發change事件,告訴父組件,自己增加了1(可以自己命名事件,不一定要是change)
                this.$emit("change", 1)
            }
        }
    }
    var vm = new Vue({
        el: "#root",
        components: {
            counter: counter
        },
        data: {
            total: 5
        },
        methods: {
            //接收到子組件中的參數step(這里是this.$emit("change", 1)中的1),參數可以隨意命名的,不一定要叫step
            handleInc: function(step) { 
                this.total += step
            }
        }
    })
</script>
</body>
</html>
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子长县| 闽侯县| 嘉定区| 博兴县| 民乐县| 布拖县| 昭觉县| 康乐县| 沙田区| 无为县| 湖州市| 工布江达县| 威信县| 襄汾县| 安平县| 那坡县| 台中市| 夹江县| 白山市| 玉山县| 常德市| 红原县| 且末县| 阳曲县| 宁武县| 卢湾区| 政和县| 双峰县| 娄底市| 永吉县| 准格尔旗| 奈曼旗| 资中县| 都江堰市| 临武县| 汝城县| 沾化县| 榆社县| 宜宾县| 托克托县| 佛坪县|