直接貼代碼,這是一組jquery全選,全不選,反選代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../vue/vue.js"></script>
<script src="../vue/iview/js/iview.min.js"></script>
<link rel="stylesheet" href="../vue/iview/css/iview.css">
</head>
<body>
<div id="app">
<i-table :columns="col" :data="data" @on-row-click="handlerClicked"></i-table>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
col: [
{
align: 'center',
title: '選項',
key: 'flag',
render: (h, params) => {
return h('Checkbox', {
props: {
value: params.row.flag
}
})
}
},
{
title: '姓名',
key: 'name'
},
{
title: '年齡',
key: 'age'
}
],
data: [
{
name: '小明',
age: 11,
flag: false
},
{
name: '小明1',
age: 12,
flag: true
}
]
}
},
methods: {
handlerClicked(val) {
this.data.forEach(function (item) {
let { name, age, flag } = item
if (name === val.name && age === val.age && flag === val.flag) {
item.flag = !item.flag
}
})
}
}
})
</script>
</body>
</html>
思路是這樣的:
- 不使用iview默認的type中的selection,使用render函數來渲染checkbox選型。
- 在data中定義flag來決定checkbox中的狀態。
- 監聽row的on-row-click事件,獲取當前行的數據,然后依次對data中的數據做對比,然后修改對應row中的flag狀態。