在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 继承详解(四)
Jul 13 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
浅谈JS如何实现真正的对象常量
Jun 25 Javascript
深入理解React中何时使用箭头函数
Aug 23 Javascript
ReactNative中使用Redux架构总结
Dec 15 Javascript
Vue刷新修改页面中数据的方法
Sep 16 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
Threejs实现滴滴官网首页地球动画功能
Jul 13 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
Vue js with语句原理及用法解析
Sep 03 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连接Oracle数据库
2006/10/09 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
php 全局变量范围分析
2009/08/07 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
php session的锁和并发
2016/01/22 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
jquery密码强度校验
2015/12/02 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python Django批量导入数据
2016/03/25 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
交通事故协议书范文
2014/04/16 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
党支部培养考察意见
2015/06/02 职场文书
会议主持词通用版
2019/04/02 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Apache POI的基本使用详解
2021/11/07 Servers