Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将 元素作为承载分发内容的出口。
然后在 的模板中,你可能有:
当组件渲染的时候,将会被替换为“Add Todo”。
不过,字符串只是开始!插槽还可以包含任何模板代码,包括 HTML:
ps: 这个特性使用起来非常方便,比如添加一些 icon 之类的。
当你想在一个插槽中使用数据时,例如:
该插槽可以访问与模板其余部分相同的实例 property (即相同的“作用域”)。
插槽不能访问 的作用域。
作为一条规则,请记住:
父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。
有时为一个插槽设置具体的后备 (也就是默认的) 内容是很有用的,它只会在没有提供内容的时候被渲染。
例如在一个 组件中:
我们可能希望这个 内绝大多数情况下都渲染文本“Submit”。
为了将“Submit”作为后备内容,我们可以将它放在 标签内:
现在当我在一个父级组件中使用 并且不提供任何插槽内容时:
则这个提供的内容将会被渲染从而取代后备内容:
例如对于一个带有如下模板的 组件:
对于这样的情况, 元素有一个特殊的 attribute:name。
这个 attribute 可以用来定义额外的插槽:
一个不带 name 的 出口会带有隐含的名字“default”。
在向具名插槽提供内容的时候,我们可以在一个
现在