在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 相关文章推荐
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
jQuery EasyUI Pagination实现分页的常用方法
May 21 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
express+vue+mongodb+session 实现注册登录功能
Dec 06 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
Nov 04 Javascript
JavaScript实现一键复制内容剪贴板
Jul 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
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
python实现ip查询示例
2014/03/26 Python
Python 实现微信防撤回功能
2019/04/29 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python collections模块的使用
2020/10/16 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
职业规划实施方案
2014/06/10 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
清明节主题班会
2015/08/14 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
MySQL中in和exists区别详解
2021/06/03 MySQL
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript