如果熟悉react写法,便不需要使用那种麻烦的属性声明的方式。
<el-table-column
v-for="item in tableLabel"
:key="item.value"
:formatter="item.formatter"
show-overflow-tooltip
:min-width="item.width"
:label="item.label"
:render-header="RenderHeader"
:sortable="item.sortable"
:sort-orders="['ascending', 'descending']"
/>
在这里声明了自定义渲染函数的方法RenderHeader
RenderHeader(h, { column, $index }) {
const function_index = ['0', '1', '2', '3', '4', '5', '6', '7', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '71']
const arr = function_index.map(v => {
const obj = {}
obj.label = funcCode[v]
obj.value = v
return obj
})
return (
<span>
{$index === 0 ? (<span>ID</span>) :
$index === 1 ?(<span>终端编码</span>) :
$index === 2
? (<el-select placeholder='请选择功能' clearable onChange={(val) => {
this.$emit('changeFNCcode', val)
}} v-model={this.value}>{arr.map(item => <el-option key={item.value} label= {item.label} value={item.value}></el-option>)}</el-select>)
: (<span>时间</span>)}
</span>
)
}
注意–里面下拉框的渲染,就是和在react中的写法一样,其实vue与react的h函数都是createElement,所以才可以这样写。
这里面是不支持vue的v-for v-if @change的语法