在element-ui的el-tree组件中用render函数生成el-button的实例代码


Posted in Javascript onNovember 05, 2018

本文主要介绍怎么在el-tree组件中通过render函数来生成el-button。

这是element-ui中el-tree树:

在element-ui的el-tree组件中用render函数生成el-button的实例代码

这是需要实现的效果:

在element-ui的el-tree组件中用render函数生成el-button的实例代码

tree.vue文件中,具体实现的代码如下:

<template>
  <el-tree
      :data="treeData"
      :props="defaultProps"
      show-checkbox
      node-key="id"
      default-expand-all
      :expand-on-click-node="false"
      :render-content="renderContent">
  </el-tree>
</template>
<script>
  export default {
   name: 'tree',
   data:function(){
     return {
       treeData: [{
         id: 1,
         label: '一级',
         code:'1',
         children: [{
           id: 4,
           label: '二级',
           code:'1-1',
           children: [{
             id: 9,
             label: '三级',
             code:'1-1-1',
           }, {
             id: 10,
             label: '三级',
             code: '1-1-2',
           }]
         }]
       }],
       defaultProps: {
         children: 'children',
         label: 'label'
       }
     }
   },
   methods:{
    renderContent:function(h,data){
      return h('span',{},[
        h('span',data.data.label+":"),
        h("span",{
          class:'leftSpan',
          domProps:{
            innerHTML:data.data.code
          }
        }),
        h("el-button",{
          class:'floatSpan',
          props:{
            type:'danger'
          }
        },'删除')
      ])
    }
   }
  }
</script>
<style>
 .leftSpan{
   color: dodgerblue;
   margin-left: 15px;
 }
 .floatSpan{
   float: right;
   margin-top: 8px;
   margin-right: 10px;
   padding: 5px;
 }
 .el-tree {
   width: 33%;
   margin: 92px auto;
 }
</style>

主要说下这段代码:

renderContent:function(h,data){
      return h('span',{},[
        h('span',data.data.label+":"),
        h("span",{
          class:'leftSpan',
          domProps:{
            innerHTML:data.data.code
          }
        }),
        h("el-button",{
          class:'floatSpan',
          props:{
            type:'danger'
          }
        },'删除')
      ])
    }

文档中有详细的说明:https://cn.vuejs.org/v2/guide/render-function.html

h(
   //参数1:{String | Object | Function},一个HTML标签字符串,组件选项对象,或解析任何一种的一个async异步函数,必需参数。
    'el-button',
   //参数2:{Object} 一个包含模板相关属性的数据对象,可以在template中使用这些特性,可选参数
   {},
   //参数3: {String | Array},如果直接是字符串则会生成“文本虚拟节点;如果是数组,则可以在数组中,则可以生成子虚拟节点
    '删除'
  )

参数2中的对象在文档中有详细的介绍:

{
 // 和`v-bind:class`一样的 API
 // 接收一个字符串、对象或字符串和对象组成的数组
 'class': {
  foo: true,
  bar: false
 },
 // 和`v-bind:style`一样的 API
 // 接收一个字符串、对象或对象组成的数组
 style: {
  color: 'red',
  fontSize: '14px'
 },
 // 普通的 HTML 特性
 attrs: {
  id: 'foo'
 },
 // 组件 props
 props: {
  myProp: 'bar'
 },
 // DOM 属性
 domProps: {
  innerHTML: 'baz'
 },
 // 事件监听器基于 `on`
 // 所以不再支持如 `v-on:keyup.enter` 修饰器
 // 需要手动匹配 keyCode。
 on: {
  click: this.clickHandler
 },
 // 仅用于组件,用于监听原生事件,而不是组件内部使用
 // `vm.$emit` 触发的事件。
 nativeOn: {
  click: this.nativeClickHandler
 },
 // 自定义指令。注意,你无法对 `binding` 中的 `oldValue`
 // 赋值,因为 Vue 已经自动为你进行了同步。
 directives: [
  {
   name: 'my-custom-directive',
   value: '2',
   expression: '1 + 1',
   arg: 'foo',
   modifiers: {
    bar: true
   }
  }
 ],
 // 作用域插槽格式
 // { name: props => VNode | Array<VNode> }
 scopedSlots: {
  default: props => createElement('span', props.text)
 },
 // 如果组件是其他组件的子组件,需为插槽指定名称
 slot: 'name-of-slot',
 // 其他特殊顶层属性
 key: 'myKey',
 ref: 'myRef',
 // 如果你在渲染函数中向多个元素都应用了相同的 ref 名,
 // 那么 `$refs.myRef` 会变成一个数组。
 refInFor: true
}

总结

以上所述是小编给大家介绍的在element-ui的el-tree组件中用render函数生成el-button的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
jQuery中outerWidth()方法用法实例
Jan 19 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
JavaScript 动态三角函数实例详解
Jan 08 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
Mar 15 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
May 08 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
js实现随机数小游戏
Jun 28 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
微信小程序http连接访问解决方案的示例
Nov 05 #Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 #Javascript
浅谈Vue数据响应
Nov 05 #Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
Nov 05 #Javascript
基于vue2的canvas时钟倒计时组件步骤解析
Nov 05 #Javascript
基于Vue2实现简易的省市区县三级联动组件效果
Nov 05 #Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 #Javascript
You might like
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
prototype 的说明 js类
2006/09/07 Javascript
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
Python定时器线程池原理详解
2020/02/26 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
售后主管岗位职责
2013/12/08 职场文书
商务邀请函范文
2014/01/14 职场文书
结婚喜宴家长答谢词
2014/01/15 职场文书
运动会通讯稿50字
2014/01/30 职场文书
火锅店营销方案
2014/02/26 职场文书
市场总经理岗位职责
2014/04/11 职场文书
授权委托书格式
2014/07/31 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
毕业生学校组织意见
2015/06/04 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python