有的時候你但願提供的組件帶有一個可從子組件獲取數據的可複用的插槽。例如一個簡單的 <todo-list>
組件的模板可能包含了以下代碼:html
<ul> |
可是在咱們應用的某些部分,咱們但願每一個獨立的待辦項渲染出和 todo.text
不太同樣的東西。這也是做用域插槽的用武之地。vue
爲了讓這個特性成爲可能,你須要作的所有事情就是將待辦項內容包裹在一個 <slot>
元素上,而後將全部和其上下文相關的數據傳遞給這個插槽:在這個例子中,這個數據是 todo
對象:瀏覽器
<ul> |
如今當咱們使用 <todo-list>
組件的時候,咱們能夠選擇爲待辦項定義一個不同的 <template>
做爲替代方案,而且能夠經過 slot-scope
特性從子組件獲取數據:ide
<todo-list v-bind:todos="todos"> |
在 2.5.0+,
slot-scope
再也不限制在<template>
元素上使用,而能夠用在插槽內的任何元素或組件上。函數
slot-scope
若是一個 JavaScript 表達式在一個函數定義的參數位置有效,那麼這個表達式實際上就能夠被 slot-scope
接受。也就是說你能夠在支持的環境下 (單文件組件或現代瀏覽器),在這些表達式中使用 ES2015 解構語法。例如:ui
<todo-list v-bind:todos="todos"> |
這會使做用域插槽變得更乾淨一些。spa