vue中的插槽有三種:單個插槽、具名插槽、作用域插槽,這個在官網上能看到
(https://cn.vuejs.org/v2/guide/components.html#單個插槽)
作用域插槽簡單來說就是父組件只管顯示樣式,數據由子組件來提供。比如上面的代碼,el-table-column內的template是傳遞給其內部solt的顯示內容,但是scope的值是由el-table-column內部solt綁定的數據返回的。這個數據具體是什么由el-table-column中指定,類似:
<slot name="**" :data="data"></slot>export default {data: function(){return {data: ['1','2','3','4','5','6']}},}而scope就是上面代碼中的data。
昨天看vue的官網文檔,在slot-scope這塊不是特別的明白,今天自己做了一個小例子,便于理解。
先說一下我們假設的應用常用場景,我們已經開發了一個代辦事項列表的組件,很多模塊在用,現在要求在 不影響已測試通過的模塊功能和展示 的情況下,給 已完成的代辦項增加一個對勾效果 。
也就是說,代辦事項列表組件要滿足一下幾點
解決辦法很多,不過為了解釋組件作用域插槽,我們就用slot-scope了,寫列一下之前組件的代碼。
todo-list.vue 組件
<template> <ul> <li v-for="item in todoList" v-bind:key="item.id"> <slot v-bind:itemValue = "item" > {{ item.test }} </slot> </li> </ul></template><script>export default { name: 'todoList', props: { todos: Array }, data(){ return { todoList:this.todos } }}</script>組件代碼
<template> <ul> <li v-for="item in todoList" v-bind:key="item.id"> <slot> {{ item.test }} </slot> </li> </ul></template><script>export default { name: 'todoList', props: { todos: Array }, data(){ return { todoList:this.todos } }}</script>父組件代碼
<template> <div id="app"> <h2>之前組件調用</h2> <todo-list v-bind:todos="todosBefore" ></todo-list> </div></template><script>import todoList from './components/todo-list.vue'export default { name: 'app', data:function(){ return { todosBefore:[ { test:'詢問時間', id:12312313123 }, { test:'代辦1', id:123123123423423 }, { test:'愛你地方年底見
主站蜘蛛池模板:
沛县|
安陆市|
石河子市|
山东|
蓝山县|
家居|
石台县|
沁水县|
华坪县|
贵港市|
胶南市|
马关县|
淮南市|
滨州市|
武功县|
廊坊市|
白城市|
通辽市|
汾阳市|
高平市|
峨山|
新和县|
江山市|
专栏|
荆门市|
岚皋县|
新干县|
金华市|
西畴县|
敦煌市|
望奎县|
郎溪县|
辽阳市|
勃利县|
寿宁县|
邵东县|
镶黄旗|
德阳市|
准格尔旗|
封开县|
抚宁县|