有的时候你但愿提供的组件带有一个可从子组件获取数据的可复用的插槽。例如一个简单的 <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