最近在用elementUI寫管理后臺(tái)的時(shí)候,遇到了需要在el-table表頭自定義的功能,所以搜索了下vue官網(wǎng),發(fā)現(xiàn)了createElement這個(gè)方法;之前在做react native畢設(shè)的時(shí)候,倒是用到了renderHeader的方法。
- 這是官網(wǎng)關(guān)于createElement的簡(jiǎn)單例子
// @returns {VNode}
createElement(
// {String | Object | Function}
// 一個(gè) HTML 標(biāo)簽字符串,組件選項(xiàng)對(duì)象,或者一個(gè)返回值類型為String/Object的函數(shù),必要參數(shù)
'div',
// {Object}
// 一個(gè)包含模板相關(guān)屬性的數(shù)據(jù)對(duì)象
// 這樣,您可以在 template 中使用這些屬性.可選參數(shù).
{
// (詳情見下一節(jié))
},
// {String | Array}
// 子節(jié)點(diǎn) (VNodes),由 `createElement()` 構(gòu)建而成,
// 或簡(jiǎn)單的使用字符串來生成“文本結(jié)點(diǎn)”。可選參數(shù)。
[
'先寫一些文字',
createElement('h1', '一則頭條'),
createElement(MyComponent, {
props: {
someProp: 'foobar'
}
})
]
)
從例子中可以看到,createElement方法是可以嵌套的
- 實(shí)際例子(別人寫得fiddle例子)
<template>
<el-table :data="tableData" border style="width: 100%">
<el-table-column inline-template label="日期" width="180" :render-header="renderHeader">
<div>
<el-icon name="time"></el-icon>
<span style="margin-left: 10px">{{ row.date }}</span>
</div>
</el-table-column>
</el-table>
</template>
<script>
data() {
return {
tableData: [{
date: '2016-05-02
}]
}
},
methods: {
renderHeader(createElement, { column }) {
return createElement(
'div',
[
createElement('a', ['==' + column.label + '=='], {
attrs: {
href: '#test'
}
})
]
);
}
}
</script>