美文网首页
vue 封装el-table组件,使用v-bind="$prop

vue 封装el-table组件,使用v-bind="$prop

作者: webmrxu | 来源:发表于2021-01-14 00:48 被阅读0次

项目中想基于element 中el-talbe 在做一层封装,这样做的好处是

  • 对el-table 组件可控
  • 基于el-table 组件做定制化开发

想要实现组件层级如下:

page 组件,业务层代码
my-table 组件,自己封装的组件,中间层代理组件,需要开发
el-talbe 组件,基于element-ui 的table组件

image.png

开发思路

开发逻辑是,在page页面组件中,引入 my-table 组件,传递属性prop到 my-table 组件,my-table 组件传递属性prop 到 el-table组件。

数据传递

my-table需要实现el-table 组件的所有prop,event 传递。示意图如下:


image.png

事件event传递

并且el-table 中所有的emit 事件,都需要在my-table 做一层转发到 page 组件。


image.png

my-table 需要做到似有似无到效果,但要做到可拦截,并且做数据格式处理,样式定制化。

初级实现

page组件,所有prop都是el-table 的配置

<page 
    :data="data" 
    :height ="100"
    :max-height="200" 
    :stripe ="false"
    :border="false"
    :size="'small'"
    ...
>
</page>

my-table 做代理转发prop 到el-table

<my-table>
   <el-table
    :data="data" 
    :height ="100"
    :max-height="200" 
    :stripe ="false"
    :border="false"
    :size="'small'"
    ...
  >
  </el-table>
</my-table>
<script>
props: {
  data,
  height,
  maxHeight,
  stripe,
  border,
  size
   ...
}
</script>

高级实现

page组件,所有prop都是el-table 的配置

<page 
    :data="data" 
    :height ="100"
    :max-height="200" 
    :stripe ="false"
    :border="false"
    :size="'small'"
    ...
>
</page>

my-table 使用v-bind="$props"做事件event代理转发到el-table

<my-table>
   <el-table
    v-bind="$props"
  >
  </el-table>
</my-table>
<script>
</script>

my-table 使用v-on="$listeners"做代理转发prop 到el-table

<my-table>
   <el-table
    v-bind="$props"
    v-on="$listeners"
  >
  </el-table>
</my-table>
<script>
</script>

如何实现自定义,添加分页组件

处理Table-column Attributes

相关文章

  • vue 封装el-table组件,使用v-bind="$prop

    项目中想基于element 中el-talbe 在做一层封装,这样做的好处是 对el-table 组件可控 基于e...

  • Vue学习记录

    vue data 组件定义只接受 function 父子组件属性传递: 父组件的子组件中 v-bind :prop...

  • vue中组件之间的传值

    父组件给子组件传值,利用prop 使用子组件时给子组件用v-bind绑定一个自定义属性prop,然后给它赋值为父组...

  • Vue 组件间传值

    父子组件间传值 父组件—>子组件:1.父组件使用 v-bind 绑定变量并赋值给变量。2.在子组件里使用 prop...

  • 对vue的props实现双向数据流

    1、 使用Prop需要遵守的规定 vue官网中规定,vue中的Prop是单向数据流 在vue中,组件中的Prop是...

  • 2018-09-18

    组件是可复用的 Vue 实例一、组件:可以拓展HTML元素,封装可重用的代码组件分为全局组件和局部组件通过prop...

  • VUE 封装拖拽组件

    vue 拖拽组件封装,组件代码如下 使用方式:

  • 2020-12-09封装超级表格组件

    引入表单组件的封装 searchForm.vue 引入表格组件中使用 pushTable.vue中使用 这里使用...

  • vue的基本知识点总结

    组件通信 1、父传子 父组件: // 动态绑定值用v-bind 例子中的“:”为简写子组件:prop...

  • 使用vue-pdf在Vue中进行pdf的预览下载

    1、使用npm 下载vue-pdf 2、封装pdf组件 3、在组件中具体使用封装的pdf组件 4、打包的时候会报错...

网友评论

      本文标题:vue 封装el-table组件,使用v-bind="$prop

      本文链接:https://www.haomeiwen.com/subject/ncdmaktx.html