溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue組件之間傳值實(shí)力的案例分析

發(fā)布時(shí)間:2020-08-13 10:16:46 來源:億速云 閱讀:186 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)Vue組件之間傳值實(shí)力的案例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

 在我們?nèi)腴TVue的時(shí)候,不得不提到組件,在某些情況下,組件間需要互相傳值,比如父組件需要向子組件傳值,子組件需要向父組件傳值,那么下面用一個(gè)實(shí)力來詳細(xì)說明。

效果:

我們想實(shí)現(xiàn)這樣一個(gè)效果,在輸入框輸入文字點(diǎn)擊提交按鈕后,下面會(huì)出現(xiàn)對(duì)應(yīng)的輸入內(nèi)容。如果點(diǎn)擊某個(gè)內(nèi)容,那么這個(gè)內(nèi)容就消失。

如下圖,比如我們?cè)邳c(diǎn)擊2的時(shí)候,2就會(huì)消失

Vue組件之間傳值實(shí)力的案例分析

分析:

1、首先我們會(huì)獲取到input的輸入內(nèi)容,把所有輸入內(nèi)容都集合成一個(gè)數(shù)組,在<li><li>循環(huán)數(shù)據(jù)。因?yàn)?lt;li><li>都是相同的結(jié)構(gòu),我們可以把<li><li>做成一個(gè)組件,數(shù)組是在父層,定義的<li><li>組件是子組件,這就是父組件向子組件傳值,把數(shù)據(jù)傳給子組件。

2、點(diǎn)擊<li><li>某個(gè)選項(xiàng),該選項(xiàng)會(huì)消失。那么<li><li>組件會(huì)向上通知父組件,當(dāng)前點(diǎn)擊的是哪個(gè),需要父層的數(shù)組數(shù)據(jù)中哪個(gè)去掉,這就是子組件向父組件傳值。

<div id="root">
        
        <input v-model="inputValue" />
        <button @click="handleSubmit">提交</button>
        
        <ul>
            <todo-item v-bind:content="item" 
                       v-bind:index="index" 
                       v-for="(item,index) in list"
                       @delete="handleItemDelete"
            ></todo-item>
        </ul>
    </div>

    <script>

        var TodoItem={
            props:['content','index'],
            template:"<li @click='handleItemClick'>{{content}}</li>",
            methods:{
                handleItemClick:function(){
                    this.$emit('delete',this.index);
                }
            }
        }

        new Vue({
            el:"#root", 
            data:{
                inputValue:'',
                list:[]
            },
            components:{
                'TodoItem':TodoItem
            },
            methods:{
                handleSubmit:function(){
                    this.list.push(this.inputValue)
                    this.inputValue = ''  //每次提交后清空
                },
                handleItemDelete:function(index){
                    this.list.splice(index,1);
                }
            }
        })
    </script>

通過代碼我們不難發(fā)現(xiàn),子組件向父組件傳值主要在這里:

this.$emit('delete',this.index);

另外需要注意到,在Vue中以$開頭的都叫做vue的實(shí)例屬性或者方法,除此之前還需要注意有一些簡(jiǎn)寫,比如<button v-on="handleSubmit">提交</button>和<button @click='handleSubmit'>提交</button > 是相同的效果。

關(guān)于Vue組件之間傳值實(shí)力的案例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI