博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用vue自定义指令合并iview表格单元格
阅读量:5242 次
发布时间:2019-06-14

本文共 2280 字,大约阅读时间需要 7 分钟。

使用vue自定义指令合并iview表格单元格,

我们在开发过程中发现iview表格组件,官网只提供了合并表头的demo,并没有合并表格中的单元格。

ivew表头分组:

效果图如下:

 

 具体实现思路,通过vue自定义属性来操作dom,达到我们想要的效果:

代码如下: demo.vue  表格页面

html结构:

 

 

在main.js里注册全局指令(或你把指令抽离出去最后引入main.js即可 通过 import './directives'; //全局的指令 你的指令文件 ):

/** * // 注册一个全局自定义指令 `v-cell` 动态指令 * /动态内容 rowSpan  合并行 *           colSpan  合并列 *  详见:https://cn.vuejs.org/v2/guide/custom-directive.html *  render 函数中 动态内容 传递参数 给  arg *          {              name: 'my-custom-directive',              arg: 'foo',   //动态 rowSpan或colSpan              value: '2',              expression: '1 + 1',              modifiers: {                bar: true              }            }    详见:https://cn.vuejs.org/v2/guide/render-function.html */Vue.directive('cell', {    // bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。    bind: function(el, binding){        console.dir(el);        console.log(el, binding, '指令绑定');    },    // 当被绑定的元素插入到 DOM 中时……    inserted: function (el, binding) {        console.dir(el);        console.log(el, binding, '指令插入');        //找到td 元素 添加 更改 合并   rowSpan 或 colSpan        el.parentNode.parentNode[binding.arg] = binding.value;        console.dir(el.parentNode.parentNode.rowSpan);    }});/** * rmcell  指令移除 表格单元格 * /动态内容 rowSpan  合并行 *           colSpan  合并列 *           当动态内容为 rowSpan  移除的是当前元素 *                     为 colSpan  移除的是紧跟其后的 td元素 * * */Vue.directive('rmcell', {    // bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。    bind: function(el, binding){        console.dir(el);        console.log(el, binding, '指令绑定');    },    // 当被绑定的元素插入到 DOM 中时……    inserted: function (el, binding) {        console.dir(el.parentNode.parentNode);        console.log(el, binding, '移除指令插入');        //找到td 元素 移除        if(binding.arg === 'rowSpan'){            el.parentNode.parentNode.remove();        }else {            let parent = null;            //合并n列 删除 n-1 次 单元格 的 下一个元素            for(let i = 0; i < binding.value - 1; i++){                el.parentNode.parentNode.nextSibling.remove();                console.log('执行次数');            }        }    }});

代码中用到了动态指令:

详见:https://cn.vuejs.org/v2/guide/custom-directive.html

render函数中使用指令:

详见:https://cn.vuejs.org/v2/guide/render-function.html

转载于:https://www.cnblogs.com/taohuaya/p/11581989.html

你可能感兴趣的文章
c++ map
查看>>
exit和return的区别
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
Django 相关
查看>>
git init
查看>>
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
Fragment
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>