【发布时间】:2017-12-12 00:33:24
【问题描述】:
也许这是一个简单的问题,但我找不到创建基本包装组件的正确方法。例如我有一个这样的选择:
<select v-model="foo" name="bar" v-validate="'required'" v-bind:class="{ invalid: errors.has('bar') }">
<option value="">Default</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
我需要在这个周围添加一些糖,div 和 custom-select 类。所以我创建了一个custom-select 组件来包装原生选择:
Vue.component('custom-select', {
template: `
<div class="custom-select">
<select v-on="$listeners" v-bind="$props">
<slot></slot>
</select>
</div>
`,
});
我的问题是我的组件没有继承 v-model 和 class 之类的属性。想知道有没有全局的方式,不用重写组件中所有的props,让他继承一切?
【问题讨论】:
-
您可能想让您的自定义组件将选择作为插槽。在任何情况下,
v-model都不是道具,也没有直接的方法可以将其代理到层次结构中。