iview的渲染逻辑_vue + iview 组件的渲染

这篇博客介绍了如何在iview的Table组件中结合Poptip实现动态列渲染,包括删除确认提示和表格内嵌表格。同时展示了表格表头的Tooltip提示以及表格单元格的编辑功能,包括输入框显示、保存和撤销操作,提供了详细的代码示例。
摘要由CSDN通过智能技术生成

一、iview 在Table组件中使用Poptip组件

colKey: [

{

title: '产品图',

key: 'pic',

sortable: true,

render: function(h, param){

return h('div', [

h('Button', [

h('Poptip', {

props: {

confirm: true,

title: '确定要删除吗!',

type: 'error',

size: 'small'

},

on: {

'on-ok': ()=>{

this.$Message.info('点击了确定')

},

'on-cancel': ()=>{

this.$Message.info('点击了确定')

}

}

}, '删除')

])

]);

}

]

二、poptip中渲染table

render: (h, params) => {

let column = [

{

title: "游戏",

key: "name"

},

{

title: "占成",

key: "rate"

}

];

let data = [];

let gameList = params.row.gameList;

let len = gameList.length;

for (let item of gameList) {

let obj = {};

obj.rate = item.rate + "%";

obj.name = item.name;

data.push(obj);

}

return h(

"Poptip",

{

props: {

trigger: "hover"

}

},

[

h(

"span",

{

style: {

cursor: "pointer",

color: "#20a0ff"

}

},

len + "款游戏"

),

h("Table", {

props: {

columns: column,

data: data,

border: true,

size: "small",

width: 250

},

slot: "content"

})

]

);

}

3.实现效果:表格表头中含有icon,鼠标移入icon,有文字提示

{

title: '本月充值金额(元)',

key: 'money',

renderHeader: h => {

return h('div', [

h('Tooltip', {

props: {

content: '已去除折扣、当月充值退款金额,未去除本月之前充值在本月退款、转出的金额'

},

style: { marginRight: '5px', cursor: 'pointer' }

}, ['',

h('Icon', {

props: { type: 'ios-information-outline', slot: 'content', size: '20' }

})]),

h('span', '本月充值金额(元)')

]);

}

}

4.表格内部,某一列的内容可以编辑

点击编辑icon,input框显示,里面内容为当前列内容;

点击对勾icon,进行保存;点击叉号icon,恢复原始值。

{

title: '备注',

className: 'editCell',

render: (h, params) => {

/* eslint max-len: 0 */

const remark = params.row.remark;

return h('div', {}, [

h('span', {

style: {display: this.currentRowIndex === params.index ? 'none' : 'inline-block', marginRight: '4px'}

}, remark),

h('input', {

attrs: { value: remark, class: 'special-input' },

style: {

width: '86px', height: '32px', display: this.currentRowIndex === params.index ? 'inline-block' : 'none', marginRight: '4px'

}

}),

h('i', {

attrs: { class: 'ivu-icon ivu-icon-edit' },

style: { display: this.currentRowIndex === params.index ? 'none' : 'inline-block', cursor: 'pointer' },

on: {

click: () => {

this.currentRowIndex = params.index; // this.currentRowIndex: 记录当前操作行的index

}

}

}),

h('i', {

attrs: { class: 'ivu-icon ivu-icon-checkmark' },

style: {

display: this.currentRowIndex === params.index ? 'inline-block' : 'none', cursor: 'pointer', marginRight: '4px'

},

on: {

click: e => {

const siblingEles = e.target.parentNode.children;

let newRemark = '';

/* eslint no-plusplus: 0 */

for (let i = 0; i < siblingEles.length; i++) {

if (siblingEles[i].tagName === 'INPUT') newRemark = siblingEles[i].value;

}

this._changeInvoiceRemark(newRemark, params.row.id);

}

}

}),

h('i', {

attrs: { class: 'ivu-icon ivu-icon-close' },

style: { display: this.currentRowIndex === params.index ? 'inline-block' : 'none', cursor: 'pointer' },

on: {

click: e => {

const siblingEles = e.target.parentNode.children;

for (let i = 0; i < siblingEles.length; i++) {

if (siblingEles[i].tagName === 'INPUT') siblingEles[i].value = remark;

}

this.currentRowIndex = null; // 清空索引

}

}

})

]);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值