在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 相关文章推荐
短信提示使用 特效
Jan 19 Javascript
javascript 对象定义方法 简单易学
Mar 22 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
Aug 06 Javascript
jquery实现点击展开列表同时隐藏其他列表
Aug 10 Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
JavaScript如何实现防止重复的网络请求的示例
Jan 28 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
基于Python的接口测试框架实例
2016/11/04 Python
python用户管理系统的实例讲解
2017/12/23 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
大学生村官工作感言
2014/01/10 职场文书
十八大感想感言
2014/02/10 职场文书
关于旅游的活动方案
2014/08/15 职场文书
初中教师个人总结
2015/02/10 职场文书
个人廉洁自律总结
2015/03/06 职场文书
摘录式读书笔记
2015/07/01 职场文书
2016党员党课心得体会
2016/01/07 职场文书
创业计划书介绍
2019/04/24 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP