在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 相关文章推荐
响应鼠标变换表格背景或者颜色的代码
Mar 30 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
JS中Iframe之间传值及子页面与父页面应用
Mar 11 Javascript
JavaScript限定复选框的选择个数示例代码
Aug 25 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
jQuery选择器总结之常用元素查找方法
Aug 04 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
vue综合组件间的通信详解
Nov 06 Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 Javascript
vue实现条件叠加搜索的解决方法
May 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
我的论坛源代码(十)
2006/10/09 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python游戏地图最短路径求解
2019/01/16 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
比利时买床:Beter Bed
2017/12/06 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
信息技术课后反思
2014/04/27 职场文书
2015年党建工作总结
2015/03/30 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
入党函调证明材料
2015/06/19 职场文书
爱国主义主题班会
2015/08/14 职场文书
详解Python中下划线的5种含义
2021/07/15 Python