1. 程式人生 > 實用技巧 >vue 插槽slot的使用

vue 插槽slot的使用

官網:https://cn.vuejs.org/v2/guide/components-slots.html

理解this.$emit自定義事件分發

案例

功能:使用巢狀插槽,並在子插槽中呼叫主頁面函式,對元素進行刪除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>插槽</title>
</head>
<body>
    <div id="app">
        <todo>
<todo-title slot="todo-title" :title="title"></todo-title> <todo-items slot="todo-items" v-for="(item,index) in todoItems" :item="item" :index="index" @remove="removeItems(index)" :key="index"></todo-items> </todo> </
div> <!--匯入vue.js--> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> // slot:插槽 Vue.component("todo",{ template: '<div>\ <slot name="todo-title"></slot>\ <ul>\ <slot name="todo-items"></slot>\ </ul>\ </div>
' }); Vue.component("todo-title",{ props:['title'], template: '<div>{{title}}</div>' }); Vue.component("todo-items",{ props:['item',"index"], //只能綁定當前元件的方法 template:' <li>{{item}} <input type="button" value="刪除" @click="remove"></li>', methods:{ remove:function (index) { //this.$emit 自定義事件分發 this.$emit('remove',index); } } }); var app= new Vue({ el:"#app", data:{ title:"標題", todoItems:["芒果","雪莉","香蕉"] }, methods:{ removeItems: function (index) { this.todoItems.splice(index,1);//一次刪除一個元素 } } }); </script> </body> </html>
slot插槽的使用