render渲染函数详解 https://www.cnblogs.com/weichen913/p/9676210.html

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

具体用法:

render:(h,params) => {
return h(" 定义的元素 ",{ 元素的性质 }," 元素的内容"/[元素的内容])
}
1、一般情况:如果只有单文本情况下,直接生成数据即可,

<template>
<Table border :columns="columns7" :data="data6"></Table>
</template>
<script>
export default {
data () {
return {
columns7: [
{
title: 'Name',
key: 'name'
},
{
title: 'Age',
key: 'age'
},
{
title: 'Address',
key: 'address'
},
{
title: 'Action',
key: 'action',
width: 150,
align: 'center',
render: (h, params) => {
return h('div', [
h('Button', {
props: {
type: 'primary',
size: 'small'
},
style: {
marginRight: '5px'
},
on: {
click: () => {
this.show(params.index)
}
}
}, '查看'),
h('Button', {
props: {
type: 'error',
size: 'small'
},
on: {
click: () => {
this.remove(params.index)
}
}
}, '删除')
]);
}
}
],
data6: [
{
name: 'John Brown',
age: 18,
address: '北京市',
city:'北京市市辖区',
disrect:'朝阳区公园南门门口'
},
{
name: 'Jim Green',
age: 24,
address: '湖北省',
city:'武汉市',
disrect:'武昌区武汉大学北门食堂'
},
{
name: 'Joe Black',
age: 30,
address: '江苏省',
city:'苏州市',
disrect:'昆山市张浦镇新吴街'
},
{
name: 'Jon Snow',
age: 26,
address: '上海市',
city:'陆家港',
disrect:'上海东方明珠立交桥'
}
]
}
},
methods: {
show (index) {
this.$Modal.info({
title: 'User Info',
content: `Name:${this.data6[index].name}<br>Age:${this.data6[index].age}<br>Address:${this.data6[index].address}`
})
},
remove (index) {
this.data6.splice(index, 1);
}
}
}
</script>
<style>
.ivu-table-wrapper{
width: 800px;
margin: 0 auto;
}
</style>

2、自定义文本,并且给文本加上样式

依照上例:

{
title: 'Age',
key: 'age',
render:(h,params)=>{
return h('span',{
style:{
color:"red",
fontSize:'22px'
}
},params.row.age)
}
上面的例子给年龄加了字体颜色和字体大小,年龄数据被包含在span标签里,同时我们可以在style里面设置相应的字体属性。(注:在style里面写属性,不能使用横杠,有横杠的应该用大写,比如fontSize);同时我们也可以在后面为其添加单位

{
title: 'Age',
key: 'age',
render:(h,params)=>{
return h('span',{
style:{
color:"red",
fontSize:'22px'
}
},params.row.age+'岁')
}
还是上例,我们改变地点,将地点的省市区都显示在表格上

{
title: 'Address',
key: 'address',
render:(h,params)=>{
return h('span',{},params.row.address+params.row.city+params.row.disrect)
}

3、添加按钮,或将按钮变为icon图标

比如上例表格,添加的两个按钮

render: (h, params) => {
return h('div', [
h('Button', {
props: {
type: 'primary',
size: 'small'
},
style: {
marginRight: '5px'
},
on: {
click: () => {
this.show(params.index)
}
}
}, '查看'),
h('Button', {
props: {
type: 'error',
size: 'small'
},
on: {
click: () => {
this.remove(params.index)
}
}
}, '删除')
]);
}
props表示元素属性,有type,size等属性;style用来改变元素的样式;on表示元素的事件名,如果是点击事件,就用click,如果是失去焦点事件,则是blur。

引申:如果使用icon图标来代替Button组件,写法类似,只不过将元素名称换成icon,props里的type换成对应的图标名称即可。

render: (h, params) => {
return h('a', [
h('a',[
h('Icon', {
props: {
type: 'ios-search',
size:'18',
},
attrs:{
title:'查看'
},
style: {
cursor:'pointer',
color:'#009688',
fontSize:'22px',
},
on: {
click: () => {

}
}
}),
]),
]);
}
此时,末尾的查看等文字不可见;如果想要当鼠标移上去的时候,显示图标含义,那么再加上attrs属性,给其title名即可。

4、添加属性,让文字在一排显示,超过省略号表示

表格提供了一个ellipsis属性,设置为true,可以让文字在一排显示,超过表格宽度则用省略号代替。使用这个属性的话,当鼠标移上去时,是不能显示详细信息的。

表格还提供了一个tooltip属性,设置为true时,可以让文字在一排显示,超过表格宽度则用省略号代替,同时当鼠标移上去时,可以显示详细信息。

但这个属性在使用了render函数自定义下是无效的,需要再做处理。比如,我们将上例中的地址改变一下

{
title: 'Address',
key: 'address',
render:(h,params)=>{
let texts = '';//表格显示的文字
texts = (params.row.address+params.row.city+params.row.disrect).substring(0, 6) + ".....";
let str='';//鼠标移入时显示的文字
str=params.row.address+params.row.city+params.row.disrect;
return h(
"tooltip",
{
props: {
placement: "bottom",
transfer: true,
marginLeft:'-30px'
}
},
[
texts,
h(
"span",//控制文字样式,可以换行显示
{
slot: "content",
style: { whiteSpace: "normal", wordBreak: "break-all" }
},
str
)
]
)
}
}

5、表格里嵌入下拉框或下拉菜单

在表格里嵌入下拉框或下拉菜单也是一种常见的设计,实现方式如下:

{
title: '下拉',//纵列表头(类似于th)
width:140, //列表每一格的宽度
align: 'center', //ivew里面的写法,不用理会
key: 'region', //ivew里面的写法,不用理会
render: (h, params) => {
return h('Select', {
on: {
'on-change':(event) => {
console.log(event);
}
},
},
this.volumeTypes.map(function(type){//这个数组需要在data中定义,里面是一个个对象,每个对象里面应当包含value属性(因为要用到)
return h('Option', {
props:{
value:type.label,//点击事件的值
label:type.value//下拉框的值
}
}, type);
})
)
},
}
volumeTypes在data里的定义数组
volumeTypes:[
{
value:'a',
label:1
},
{
value:'b',
label:2
}
]

在控制台打印为1,2.显示a,b。需要注意的是:在这个change事件中,‘on-change’需要拆开显示,否则不生效,像网上有的是连在一起‘onChange’来显示的,没有实现成功。

在表格中放入下拉菜单的方法大同小异

{
title: '品种',
width:100,
align: 'center',
key: 'varieties',
render: (h, params) => {
return h('Dropdown',{
props:{
trigger:"click"
},
on:{
'on-click':(value)=>{
console.log(value);//value和下面选项的name对应
}
} //iview组件内部的属性定义在其标签的对象里
}, [//盒子内部其他标签元素放入数组中
h('a',[//创建一个a标签,a标签里面又有元素,继续放入后面数组
h('span','下拉'),//span中的内容
h('Icon',{
props: {
type: 'md-arrow-dropdown',
size:'18'
}
})
]),
h('DropdownMenu',{//创建一个和a标签同级的标签
slot:"list"//iview组件内部的属性定义在其标签的对象里
},
this.dropdownItems.map(function(type){//把map看作循环,type看作循环的每一项
return h('DropdownItem',{
props:{
name:type.val
}
},type.val)
})
)
]);
}
},
对于render函数而言,我们可以将h看作一个创建元素的字段,创建好这个元素之后,需要添加样式或者做其他操作,后面跟着一个对象(里面是属性和方法)或者数组(该元素的子元素)就行。涉及到的几个属性无外乎props,style,on,attrs等
---------------------
作者:weixin_38384967
来源:CSDN
原文:https://blog.csdn.net/weixin_38384967/article/details/83142348
版权声明:本文为博主原创文章,转载请附上博文链接!

iview的render函数使用的更多相关文章

  1. iview中render函数监听事件

    iview的table中添加datepicker在组件中嵌套组件,如果需要监听子组件的自定义事件,应该使用render中的on:{ 'on-change' () => { console.log ...

  2. iview,用render函数渲染

    <Table border :columns="discountColumns" :data="discountData.rows"></Ta ...

  3. [转]iview的render函数用法

    原文地址:https://www.jianshu.com/p/f593cbc56e1d 一.使用html的标签(例如div.p) 原生标签用法 二.使用iview的标签(例如Button) iview ...

  4. [转]iview render函数常用总结(vue render函数)

    原文地址:https://blog.csdn.net/weixin_43206949/article/details/89385550 iview 的render函数就是vue的render函数ivi ...

  5. iview使用之怎样通过render函数在table组件表头添加图标及判断多个状态

    在实际项目开发中,我们经常会用到各种各样的表格,比如在表格中填加下拉菜单,按钮,图标及可以根据状态显示对应文字等等,因为这段时间一直在做后台管理系统,所以表格用的就比较多,当然UI组件库我用的是ivi ...

  6. iview中table的render()函数

    Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接 ...

  7. iview使用之怎样通过render函数在tabs组件中添加标签

    在实际项目开发中我们通常会遇到一些比较'新颖'的需求,而这时iview库里往往没有现成可用的组件示例,所以我们就需要自己动手翻阅IviewAPI进行自定义一些组件,也可以说是将iview库里的多种组件 ...

  8. iview table表中使用render函数props传值出现问题

    使用iview中的table表格时避免不了使用render函数渲染自定义内容,或者渲染组件.但是在正常使用时出现了props传值无法识别, 按照官网介绍使用props如下: render: (h, p ...

  9. iview table中的render函数使用

    1.表格列数据内容过多可以用以下两个属性解决: ellipsis:"true', tooltip:true 使每个列的内容如果过多的话变为省略号 2.table中的render函数(实现根据 ...

随机推荐

  1. 《C Prime Plus》第十节笔记

    数组和指针 10.1 数组 10.1.1 初始化数组 标量变量:只储存单个值的变量 创建只读数组,应该用const声明和初始化数组 const int days[] = {1,2,3,5}; 省略方括 ...

  2. Qt QString的arg()方法的使用

    1.QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如 QString m = tr("); // m = "12:60:60: 2.它还有另外一种重 ...

  3. QT中的QQueue类、C++中的queue类

    C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> queue<int> Q; //定义一个int型队列 Q.empty() ...

  4. mysql安装后,进DOS输入命令mysql,提示错误:mysql ERROR 1045 (28000)的解决办法

    一.修改my.ini文件,并重启mysql服务 找到配置文件my.ini  ,然后将其打开,可以选择用记事本打开 打开后,搜索mysqld关键字,找到后,在mysqld下面添加skip-grant-t ...

  5. The Mean of the Sample Mean|Standard Deviation of the Sample Mean|SE

    7.2  The Mean and Standard Deviation of the Sample Mean Recall that the mean of a variable is denote ...

  6. OLED带来全新视觉体验

    2013年1月,在国际消费电子展(CES)上世界首款曲面OLED电视--LG OLED电视亮相,LG Display将曲面与OLED完美结合的面板技术让显示设备的外观和品质都达到了一个全新的高度,惊艳 ...

  7. mysql 优化配置和方面

    MySQL性能优化的参数简介 公司网站访问量越来越大,MySQL自然成为瓶颈,因此最近我一直在研究 MySQL 的优化,第一步自然想到的是 MySQL 系统参数的优化,作为一个访问量很大的网站(日20 ...

  8. Promise的用法(js&java)

    Promise(onsuccess , on fail) f1.then(f2.then(), f3.then()) java CompletableFuture.thenAccept

  9. LeetCode Day 13

    LeetCode0026 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空 ...

  10. Kafka与RabbitMQ、ActiveMQ协议区别

    对于Kafka与RabbitMQ.ActiveMQ协议,它们具体的区别如下: activemq:        activemq支持主从复制.集群.但是集群功能看起来很弱,只有failover功能,即 ...