【发布时间】:2017-12-24 19:35:33
【问题描述】:
假设我有一个组件Reusable,其方法onClick 设置了一个数据属性。我希望这个组件是可重用的,并且我想使用插槽来覆盖部分。
据我了解,我必须将 onClick 方法作为范围属性从 reusable 传递到 parent:
<div class="reusable">
<h2>Reusable</h2>
<slot name="clicker" v-bind:onClick="onClick">
Default stuff <button v-on:click="onClick">Close</button>
</slot>
<p v-if="clicked">You clicked me</p>
</div>
<div class="parent">
<h1>Parent</h1>
<reusable>
<template slot="clicker" scope="reusable">
<button click="reusable.onClick">
Close from parent
</button>
</template>
</reusable>
</div>
如果我有很多方法,这可能会变得冗长和嘈杂,我想知道:有没有更好的方法,或者这完全是 cromulent?
我已经研究过使用 refs,在父调用 this.$refs.reusable.onClick 上有方法,以及指定动态组件并将它们换出;两者似乎都违反直觉。
【问题讨论】:
-
我想你想在 parent 组件中处理来自 child 组件的
onClick事件,对吗? -
@ironcladgeek 我相信
parent是这里的父级,reusable是在小时候使用parents 范围渲染的:因此我不能只绑定onClick。parent组件不需要知道任何关于reusable的信息,它只是想覆盖它的一部分。我应该说:上面的例子有效,我只是想知道它是否是正确的方式。
标签: javascript vue.js vuejs2 vue-component