在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 相关文章推荐
js实现iframe动态调整高度的代码
Jan 06 Javascript
JavaScript 空位补零实现代码
Feb 26 Javascript
jquery一句话全选/取消全选
Mar 01 Javascript
js切换光标示例代码
Oct 10 Javascript
js密码强度实时检测代码
Mar 02 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
Jul 22 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
vuex操作state对象的实例代码
Apr 25 Javascript
JS调用安卓手机摄像头扫描二维码
Oct 16 Javascript
taro开发微信小程序的实践
May 21 Javascript
vue使用video插件vue-video-player详解
Oct 23 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
Python通过解析网页实现看报程序的方法
2014/08/04 Python
编写Python CGI脚本的教程
2015/06/29 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
Django xadmin安装及使用详解
2020/10/26 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
百度吧主申请感言
2014/01/12 职场文书
12月红领巾广播稿
2014/02/13 职场文书
大学生励志演讲稿
2014/04/25 职场文书
环保标语大全
2014/06/12 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
nginx 配置指令之location使用详解
2022/05/25 Servers