Vue-内容分发
九、内容分发
在Vue.js
中我们使用<slot>
元素作为承载分发内容的出口,作者称其为插槽,可以应用在组合组件的场景中;
1、测试内容分发:
比如准备制作一个待办事项组件(todo) , 该组件由待办标题(todo-title) 和待办内容(todo-items)组成(使用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:["items"],
template:"<li>{
{items}}</li>"
})
初始化数据:
var vm = new Vue({
el:"#app",
data:{
title:["后端课程"],
todoItems:["java","mysql","linux"]
}
});
绑定数据和组件:
<div id="app">
<todo>
<todo-title slot="todo-title" :title="title"></todo-title>
<todo-items slot="todo-items" v-for="item in todoItems" :items="item"></todo-items>
</todo>
</div>
Tips: v-bind可以简写成**:** ,v-on可以简化为**@**<