查看 --- 的 Vuetify 示例代码, v-toolbar
v-slot:activator="{ on }"
目的是什么?例如:
<template v-slot:activator="{ on }">
<v-toolbar-title v-on="on">
<span>All</span>
<v-icon dark>arrow_drop_down</v-icon>
</v-toolbar-title>
</template>
<script>
export default {
data: () => ({
items: [
'All', 'Family', 'Friends', 'Coworkers'
]
})
}
</script>
据我所知, on
在任何地方都不是定义的变量,所以我看不出这是如何工作的。当我在我的项目中尝试它时,Internet Explorer 在 <template v-slot:activator="{ on }">
上抛出一个错误,但如果我删除它,页面就会呈现。
原文由 Araw 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可能指的是这个例子:
以下行声明了一个名为
activator
的 作用域插槽,并提供了一个作用域对象(来自VMenu
),其中包含一个名为on
的属性:这在 IE 不支持 的范围对象上使用 解构语法。
对于 IE,您必须从范围对象本身取消引用
on
:但 理想 的解决方案 IMO 是使用 Vue CLI 生成的项目,其中包括 Babel 预设 (
@vue/babel-preset-app
) 以自动包含 目标 浏览器所需的转换/polyfill。在这种情况下,babel-plugin-transform-es2015-destructuring
将在构建期间自动应用。activator
插槽的详细信息VMenu
允许用户指定一个名为activator
的开槽模板,其中包含在某些事件时激活/打开菜单的组件(例如,click
)。VMenu
通过对象 为这些事件提供侦听器,传递给activator
插槽:slot 内容可以像这样访问
VMenu
的事件监听器:为了提高可读性,范围数据也可以在模板中进行 解构:
范围对象中的侦听器通过
v-on
的对象语法传递给<button>
,该语法将一个或多个事件/侦听器对绑定到元素。对于on
的这个值:…按钮的单击处理程序绑定到
VMenu
方法。