iview使用render函数渲染嵌套表格

v-if=“hostsList && !error”

border

ref=“selection”

:columns=“columns”

:data=“hostsList”

@on-selection-change=“tableSelection”

@on-select=“tableSelect”

初始化data中返回的数据

columns: [ //表格头部 信息 id hostname tags loc idc status

{

type: ‘selection’,

width: 60,

align: ‘center’,

},

{

title: ‘机器名称’,

key: ‘hostname’,

width: 200,

render: (h, params) => {

let data =params.row;

let url = ‘’;

if(data.idc === ‘uclcn’ || data.idc === ‘alicn’ || data.idc === ‘tencn’) {

url = http://${data.hostname}:1988

} else {

url = http://${data.ip}:1988

}

return h(‘a’,

{

domProps:{

href: url,

target:‘_blank’

}

},

data.hostname

)

}

},

{

title: ‘机器IP’,

key: ‘ip’,

width:150,

align: ‘center’,

},

{

title: ‘机器类型’,

key: ‘type’,

width:150,

align: ‘center’,

render: (h, params) => {

console.log( 99999, h ,params)

let data = params.row;

let type = ‘’

if (data.type == ‘commodo’) {

type = ‘虚拟机’

} else {

type = ‘容器’

}

return h(‘div’,

{},

type

)

}

},

{

title: ‘节点’,

key: ‘tags’,

minWidth:450,

render: (h, params) => {

let data =params.row.tags;

let _this = this

return h(‘div’, data.map( (item)=>{

return h(‘div’, {

style: {

// padding: ‘5px 0’,

// lineHeight: ‘24px’,

}

},[

h(‘a’,{

style:{

display: ‘inline-block’,

padding: ‘5px 0’,

lineHeight: ‘24px’,

fontSize: ‘12px’,

},

on:{

click: () => {

let href = window.location.href

let host = href.split(‘?’)[0]

window.location.href = host + ‘?tagstring=’ + item

window.location.reload()

}

}

}, item ),

h(‘Poptip’, {

props: {

trigger:“hover”,

placement: ‘top’,

// 注意一定要添加该属性,否则表格会遮盖住气泡浮框

transfer: true,

content: ‘复制’,

// width: ‘20px’,

}

},

[

h(‘Icon’, {

class: ‘ivu-icon ivu-icon-ios-copy-outline copyBtn1’,

style: {

marginleft: ‘15px’,

cursor: ‘pointer’

},

props: {

type:“ios-copy-outline”

},

on: {

click: () => {

console.log(99999)

//头部copy文本方法

let Clipboard = this.base.Clipboard; //调用公共复制文本方法

var clipboard = new Clipboard(‘.copyBtn1’ , {

text: function() {

clipboard.destroy();

return item;

}

});

clipboard.on(‘success’, function(e) {

e.clearSelection();

_this.$Message.success(‘复制成功~’);

});

clipboard.on(‘error’, (e)=>{

clipboard.destroy();

_this.$Message.error(‘复制失败,请手动复制~’)

});

}

}

})

]

)]

)

}),

)}

},

{

title: ‘操作’,

key: ‘action’,

width: 150,

align: ‘center’,

render: (h, params) => {

return h(‘div’, [

h(‘Button’, {

props: {

type: ‘success’,

size: ‘small’

},

style: {

marginRight: ‘5px’

},

on: {

click: () => {

if(this.popup){ //第一个弹框是打开状态的时候什么也不做

return;

}

//this.clickBindIP( params.row , params.index ); //传递给点击绑定事件

let data = params.row;

this.rename.isLayer = true;

this.rename.lodVal = data.hostname;

this.rename.id = data.id;

this.rename.head = data.loc+‘-’ //新名字的头

this.rename.tail = ‘.’+data.idc //新名字的尾部

}

}

}, ‘改名’),

h(‘Button’, {

props: {

type: ‘error’,

size: ‘small’

},

on: {

click: () => {

//this.removeBindIP(params.row , params.index)

this.$Message.info(‘您点击了重启按钮’)

}

}

}, ‘重启’)

]);

}

}

],

2.render函数返回节点格式


iview表格的render函数作用是自定义渲染当前列,权限高于key,所以使用了render函数,那么表格的key值就无效了。render函数传入两个参数,第一个是 h,第二个是对象,包含 row、column 和 index,分别指当前单元格数据,当前列数据,当前是第几行。

具体用法:

render:(h,params) => {

return h(" 定义的元素 ",{ 元素的性质 },“元素的内容”/[元素的内容])

}

1.返回单文本

如果是可以直接用的数据字段,直接把字段赋值给key值就可以了

{

title: ‘机器IP’,

key: ‘ip’,

width:150,

align: ‘center’,

},

2.返回自定义文本

使用return h函数返回

{

title: ‘机器名称’,

key: ‘hostname’,

width: 200,

render: (h, params) => {

let data =params.row;

let url = ‘’;

if(data.idc === ‘uclcn’ || data.idc === ‘alicn’ || data.idc === ‘tencn’) {

url = http://${data.hostname}:1988

} else {

url = http://${data.ip}:1988

}

// 如果不做以上操作可直接使用return h函数返回

return h(‘a’, // 元素名称

{

domProps:{

href: url,

target:‘_blank’

}// 为元素赋属性

style: {

fontSize: ‘14px’

}// 为元素写样式,驼峰书写格式,值加“”

}, // 元素性质

on: {

click: () => {}

}, // 元素事件

data.hostname // 元素内容

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
roid工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-J4j4JUYM-1715461940057)]

[外链图片转存中…(img-5LnqJ3ln-1715461940058)]

[外链图片转存中…(img-grXeROoq-1715461940058)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值