element ui table render-header自定义表头信息使用

在使用vue自定义组件内容过程之中,咱们绝大多数状况下都是经过预先写好不一样的html模板,再经过props传入不一样的值来渲染不一样的模板。例如咱们须要实现一个<v-title size='1'>组件。传入不一样的size,标题显示不一样的字号大小,咱们可能这样去实现这个组件:html

<template>
    <h1 v-if='size==1'><slot></slot></h1>
    <h2 v-if='size==2'><slot></slot></h1>
    <h3 v-if='size==3'><slot></slot></h1>
</template>

这样作法显得代码过多,并且有时候咱们须要真的JavaScript彻底编程能力,即经过js代码生成html结构,再插入到页面之中。实现这样要求咱们须要了解render函数。首先咱们先了解三点vue

  1. render方法的实质就是生成template模板;
  2. 经过调用一个方法来生成,而这个方法是经过render方法的参数传递给它的;
  3. 这个方法有三个参数,分别提供标签名,标签相关属性,标签内部的html内容

下面经过一个element ui自定义表格表头内容的功能来展现render函数使用。
页面代码部分:编程

<el-table-column  prop='timeSlice' :render-header="renderHeader">
    <template slot-scope="scope">
        {{scope.row.timeSlice}}
    </template>
</el-table-column>

js部分:使用render函数数组

//自定义列标题内容
    renderHeader(h, { column, $index },index){
       return h('span', {}, [
        h('span', {}, '时间片断'),
        h('el-popover', { props: { placement: 'top-start', width: '200', trigger: 'hover', content: '领先/落后品类=单店平均单量-该品类城市店均单量' }}, [
           h('i', { slot: 'reference', class:'el-icon-question'}, '')
          ])
       ])

    },

实现效果:函数

clipboard.png

能够看到第一个函数参数即 标签名,第二个为属性名组成的对象,第三个参数表明值,若是值依然包含html标签,咱们能够使用数组来定义。以上就是本文所有内容。ui

相关文章
相关标签/搜索