2017-09-14 101 views

回答

3

創造新的道具,如果該項目是最後一個傳遞true。

<player ref="player" v-for="(item, index) in data" :should-play="index === data.length - 1"> 

<player> 

播放器組件:

props { 
    shouldPlay: Boolean 
} 

mounted() { 
    if (this.shouldPlay) 
    this.play(); 
}, 
+0

感謝您的幫助。你給我一個新的思路:在dom中寫邏輯有時會更方便。 – EcoChan

1

由於ref是對常規HTML節點的引用,因此只需使用ParentNode.lastElementChild即可訪問最後一個子節點。
但是,您當前的代碼中存在一個概念性錯誤:每個玩家實例都附帶相同的參考。您可能打算將它附加到父節點上。

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    items: [{ 
 
     src: "foo" 
 
    }, { 
 
     src: "bar" 
 
    }] 
 
    }, 
 
    mounted() { 
 
    const target = this.$refs.parent.lastElementChild 
 
    console.log(target) 
 
    } 
 
})
<script src="https://unpkg.com/vue"></script> 
 
<div id="app"> 
 
    <div ref="parent"> 
 
    <player v-for="(item, index) in items" v-bind:key="index" v-bind:src="item.src"></player> 
 
    </div> 
 
</div>