不能在slot上绑定和触发事件

我经常看到有些开发人员,在 slot 上进行事件的监听和分发,这是不可能的。

组件的 slot 由调用它的父组件提供,这意味着所有事件都应该与父组件相关联。尝试去倾听这些变化意味着你的父子组件是紧密耦合的,可以使用 $parent 来操作。

<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>

<div id="app" >
  <parent>
    <child></child>
   </parent>
</div>
Vue.component('parent', {
  // 错误的在slot监听事件
  // template: `
`,
template: `
`
, methods: { test () { alert('Test ok') } } }) Vue.component('child', { // 错误写法,使用$emit // template: `` // 正确写法,使用$parent template: ``, }) new Vue({ el: '#app', })

了解这个问题的答案,看看vue作者在GitHub中的说法,传送门

你可能感兴趣的:(vue)