在开发过程中,会遇到这样的需求,用到了 Table 组件,但是一进来页面需要默认选中某些项……
前期的 iView 的安装以及引用就不赘述了,直接切入主题:
html 结构如下:
<!-- | |
demodata:table 的一个标识(也可以理解成一个名字) | |
liststyle:定义 table 需要的格式及其关键字 | |
listdata:指 table 具体的数据 | |
--> | |
<Table ref="demodata" :columns="liststyle" :data="listdata" border></Table> |
接下来,就是配置 js 部分了
data(){ | |
return{ | |
liststyle : [ //table 数据格式 | |
{ | |
type: 'selection', | |
}, | |
{ | |
title: '名字', | |
key: 'name', | |
}, | |
{ | |
title: '年龄', | |
key: 'age', | |
}, | |
], | |
listdata : [ //table 具体数据 | |
{ | |
name : '李云曦', | |
age : '18' | |
}, | |
{ | |
name : '王宏远', | |
age : '13' | |
}, | |
{ | |
name : '欧阳舒影', | |
age : '20' | |
}, | |
], | |
} | |
}, |
到这里,一个基本的表格就展现出来了
接下来,再来探讨如何实现默认选中的功能:在具体数据每一项添加_checked:true 就可以实现默认选中
tips:数据如果是后台接口获取的,也可以动态设置这个属性实现默认选中
{ | |
name : '李云曦', | |
age : '18', | |
_checked : true //true表示选中 | |
}, |
还有另一种方法:不需要上面的设置,利用 <font color="#dd0000">this.$refs.table 的 ref 属性值.objData [index]._isChecked = true</font>
// 通过 this.$refs.demodata 获取到对应的 table,再通过 objData 设置对应索引的_isChecked 的 true/false | |
//this.$refs.table 的 ref 属性值.objData [index]._isChecked = true | |
this.$refs.demodata.objData[1]._isChecked = true; // 设置选中第一项 |
个人理解两者的区别:第一种是在操作数据,更符合 vue;而通过 ref 的方式找到的是对应的 DOM,然后操作该 DOM 上的属性。