在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之可拖动的iframe效果代码
Aug 01 Javascript
JavaScript 对象链式操作测试代码
Apr 25 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
js变量、作用域及内存详解
Sep 23 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
javascript实现延时显示提示框效果
Jun 01 Javascript
vue权限路由实现的方法示例总结
Jul 29 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 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中isset与array_key_exists的区别实例分析
2015/06/02 PHP
php数组分页实现方法
2016/04/30 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
Python进程通信之匿名管道实例讲解
2015/04/11 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python爬虫的工作原理
2017/03/05 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
python中退出多层循环的方法
2018/11/27 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
pytorch梯度剪裁方式
2020/02/04 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
毕业生学校推荐信范文
2014/05/21 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
青年志愿者活动感想
2015/08/07 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python