iview 的table 加矢量图icon的方式

本文介绍如何使用iview UI库中的Table组件,在表格列中动态显示图标,并通过点击事件改变图标状态。主要涉及render函数的使用,以及如何响应用户交互更新表格单元格内的图标样式。

iview+table+icon实现table中某一列添加图标。自己项目里遇到的问题,记录一下。

注意:table里的render函数的使用。

第一步:render函数

{
                        title: '站名',
                        key: 'name',
                        // align:"center",
                         render: (h, params) => {
                            return h('div', [
                                h('Icon', {
                                    props: {
                                        type: params.row.isClick?'md-star':'md-star-outline'
                                    },
                                    style:{
                                      color:'#ffb340',
                                      cursor: 'pointer',
                                      marginRight: '5px',
                                      fontSize:'18px'
                                    },
                                    on: {
                                        click: () => {
                                            this.stars(params.index, params)
                                        }
                                    }
                                }),
                                h('span', params.row.name)
                            ]);
                        }
                    },

第二步:后端给的字段 (是否改变为另一个状态)

 {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        date: '2016-10-03',
                        isClick: false
                    },

第三步:点击改变状态(点击事件)

 stars(index, params){
        // console.log(index, params)
        params.row.isClick = !params.row.isClick; 
        this.$eventBus.$emit("starsIndex",index);
      }

效果:

### iView Table 组件的自定义渲染 iView 是一个基于 Vue.js 的 UI 库,提供了丰富的组件来构建现代化的前端界面。其中 `Table` 组件允许开发者通过多种方式实现单元格内容的自定义渲染。 #### 自定义列模板 可以通过设置表格列中的 `slot-scope` 来访问当前行的数据并进行自定义渲染[^1]。下面是一个简单的例子: ```vue <template> <i-table :columns="customColumns" :data="tableData"></i-table> </template> <script> export default { data() { return { customColumns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age', render: (h, params) => { // 使用render函数来自定义显示逻辑 return h('span', {}, `${params.row.age} 岁`); } }, { title: '操作', slot: 'action' // 定义插槽名称 } ], tableData: [ { name: '张三', age: 28 }, { name: '李四', age: 30 } ] }; } }; </script> ``` 在这个示例中,对于“年龄”这一列,我们使用了 `render` 函数来进行自定义渲染[^2]。而对于“操作”列,则利用了插槽机制,在模板部分可以这样写入具体的内容: ```vue <i-slot name="action" slot-scope="{ row }"> <Button type="primary" size="small">编辑</Button> <Button type="error" size="small" style="margin-left: 8px;">删除</Button> </i-slot> ``` 以上代码展示了如何通过 `render` 方法以及插槽功能完成更复杂的交互需求[^3]。 #### 动态载数据与条件渲染 如果需要根据某些条件动态改变展示样式或者隐藏部分内容,也可以借助 JavaScript 表达式轻松达成目标。例如当用户的权限不足时禁用按钮点击事件等场景下非常实用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值