在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实现面向对象类的功能书写技巧
Mar 07 Javascript
使用jquery实现图文切换效果另加特效
Jan 20 Javascript
每天一篇javascript学习小结(RegExp对象)
Nov 17 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
使用jQuery判断浏览器滚动条位置的方法
May 30 Javascript
JS伪继承prototype实现方法示例
Jun 20 Javascript
vue的for循环使用方法
Feb 12 Javascript
js实现随机8位验证码
Jul 24 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
小程序实现密码输入框
Nov 16 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木马攻击防御之道
2008/03/24 PHP
Zend Guard一些常见问题解答
2008/09/11 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
纯php生成随机密码
2015/10/30 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
CI框架常用函数封装实例
2016/11/21 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
php中yii框架实例用法
2020/12/22 PHP
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
深入解析Python中的上下文管理器
2016/06/28 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
Python中bisect的使用方法
2019/12/31 Python
python 简单的调用有道翻译
2020/11/25 Python
如何利用python生成MD5并去重
2020/12/07 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
天堂的孩子观后感
2015/06/11 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL