Render函数的使用方法

Render函数是vue2.x 新增的一个函数、主要用来提升节点的性能,它是基于JavaScript计算。使用Render函数将template里面的节点解析成虚拟的dom

前期在使用 iview 和 element 树形控件时,想要在节点的前面加上光标、后面加上编辑按钮,找遍所有的 API 都没有找到对应设置方法,只看到了rendoerContent 函数,发现此函数可以使用想要功能,render-content 函数仔细研究了一番,发现不仅好用,并且灵活。

本例使用 vue  +  element 实现

例子1:在树的每个节点后面添加上编辑按钮。

 

renderContent (createElement, { node, data, store }) {

  var self = this;

 

  return createElement('span', [

    // 显示树的节点信息

    createElement('span', node.label),

    // 在属性节点后后面添加一个“ ” 和 “ 

    createElement('span',{

      attrs:{

        style:"margin-left:150px"

      },

      domProps: {

        innerHTML: "<i class=\"el-icon-circle-plus\"></i>"

      },

      on: {

        click(){

          // 添加子节点

          console.info("点击了节点" + data.id + "的添加按钮");

          store.append({ id: self.baseId++, label: 'testtest', children: [] }, data);

        }

      }

    }),

    createElement('span',{

      attrs:{

        style:"margin-left:10px"

      },

      domProps: {

        innerHTML: "<i class=\"el-icon-delete\" style=></i>"

      },

      on: {

        click(){

          // 删除子节点

 console.info("点击了节点" + data.id + "的删除按钮");

          store.remove(data);

        }

      }

    }),

  ]);

},

 

 例二:通过判断节点的深度,显示不同的光标

renderContent (createElement, { node, data, store }) {

  var self = this;

  // 通过判断,在第层之后只显示 “ ” 和 节点信息

  if (data.deep > 4) {

    return createElement('span', [

      // 显示树的节点信息

      createElement('span', node.label),

 

      // 设备后面删除光标的响应函数

      createElement('span',{

        attrs:{

          style:"margin-left:10px"

        },

        domProps: {

          innerHTML: "<i class=\"el-icon-delete\" style=></i>"

        },

        on: {

          click(){

            // 删除子节点

            console.info("点击了节点" + data.id + "的删除按钮");

            store.remove(data);

          }

        }

      }),

    ]);

  }

 

//通过对应节点显示对应的信息

  return createElement('span', [

    // 显示树的节点信息

    createElement('span', node.label),

 

    createElement('span',{

      attrs:{

        style:"margin-left:150px"

      },

      domProps: {

        innerHTML: "<i class=\"el-icon-circle-plus\"></i>"

      },

      on: {

        click(){

          // 添加子节点

          console.info("点击了节点" + data.id + "的添加按钮");

          store.append({ id: self.baseId++, label: 'testtest', children: [] }, data);

        }

      }

    }),

    createElement('span',{

      attrs:{

        style:"margin-left:10px"

      },

      domProps: {

        innerHTML: "<i class=\"el-icon-delete\" style=></i>"

      },

      on: {

        click(){

          // 删除子节点

          console.info("点击了节点" + data.id + "的删除按钮");

          store.remove(data);

        }

      }

    }),

  ]);

},

参考图片:



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值