【发布时间】:2016-07-28 08:04:18
【问题描述】:
我在 Vue.js 中有一个数据网格组件,看起来有点像官方示例中的那个:http://vuejs.org/examples/grid-component.html
基于输入数据而不是纯字符串,有时我想将“装饰”的条目显示为复选框或 v-link 组件(不仅如此,我可能还需要渲染其他组件,例如未转义的 HTML 或图像)。
显然我不想为所有用例准备 Grid 组件,所以这不是我想做的:
要显示的示例数据模型:
model = [
{
field1: 'some string',
field2: 'another string',
field3: { // this should be a checkbox
state: true
},
field4: { // this should be an <a v-link>
url: 'http://whatever',
label: 'go somewhere'
}
}
]
Grid 组件的相关摘录:
<template>
...
<tr v-for="entry in model">
<td>
<div v-if="typeof entry === 'object' && entry.hasOwnPropery('url')">
<a v-link="entry.url">{{ entry.label }}</a>
</div>
<div v-if="typeof entry === 'object' && entry.hasOwnProperty('state')">
<input type="checkbox" v-model="entry.state">
</div>
<div v-else>
{{ entry }}
</div>
</td>
</tr>
...
</template>
Vue.js 将自定义组件作为装饰器注入的理念是什么?我希望我的 Grid 对这些装饰器组件完全不可知。
【问题讨论】:
标签: components decorator vue.js