Vue中Element的table多選表格如何實現(xiàn)單選
Element的table多選表格實現(xiàn)單選
效果圖

1.在多選表格的基礎上進行處理, 呈現(xiàn)單選表格的作用
2.主要使用的是ElementUI多選表格中的方法 鏈接
- 2.1 select 事件 當用戶手動勾選數(shù)據(jù)行的 Checkbox 時觸發(fā)的事件 參數(shù)selection, row
- 2.2 row-click 事件 當某一行被點擊時會觸發(fā)該事件 參數(shù) row, column, event
- 2.3 selection-change 事件 當選擇項發(fā)生變化時會觸發(fā)該事件 參數(shù) selection
- 2.4 clearSelection 方法 用于多選表格,清空用戶的選擇
- 2.5 toggleRowSelection 方法 用于多選表格,切換某一行的選中狀態(tài),如果使用了第二個參數(shù),則是設置這一行選中與否(selected 為 true 則選中) 參數(shù)row, selected
3.html代碼
<el-table
ref="multipleTable"
:data="inputRemoteTable"
:header-cell-style="{background:'#eef1f6',color:'#909399'}"
border
style="width: 100%"
fixed
v-loading="InputDialogLoading"
@select="select"
@row-click="rowClick"
@selection-change="selectionChange"
stripe>
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="label"
label="中文名"
>
</el-table-column>
<el-table-column
prop="value"
label="代碼"
>
</el-table-column>
</el-table>4.js 代碼
select方法主要用于當用戶勾選時, 清除掉之前的勾選項
select(selection, row) {
// 清除 所有勾選項
this.$refs.multipleTable.clearSelection()
// 當表格數(shù)據(jù)都沒有被勾選的時候 就返回
// 主要用于將當前勾選的表格狀態(tài)清除
if(selection.length == 0) return
this.$refs.multipleTable.toggleRowSelection(row, true);
},
// 表格的選中 可以獲得當前選中的數(shù)據(jù)
selectionChange(val) {
// 將選中的數(shù)據(jù)存儲起來
this.selectData = val
},
// 表格某一行的單擊事件
rowClick(row, column) {
const selectData = this.selectData
this.$refs.multipleTable.clearSelection()
if( selectData.length == 1 ) {
selectData.forEach(item => {
// 判斷 如果當前的一行被勾選, 再次點擊的時候就會取消選中
if (item == row) {
this.$refs.multipleTable.toggleRowSelection(row, false);
}
// 不然就讓當前的一行勾選
else {
this.$refs.multipleTable.toggleRowSelection(row, true);
}
})
}
else {
this.$refs.multipleTable.toggleRowSelection(row, true);
}
},vue table單選邏輯
table表格有時需要在每行前面添加一列實現(xiàn)可勾選對應行的狀態(tài),table默認是多選的邏輯,如果需要實現(xiàn)單選,需要結合table封裝好的一些方法和事件
html部分:
? <el-table ? ? ? ? ? ? ref="multipleTable" ? ? ? ? ? ? :data="tableData" ? ? ? ? ? ? highlight-current-row ? ? ? ? ? ? @select-all="onSelectAll" ? ? ? ? ? ? @selection-change="selectItem" ? ? ? ? ? ? @row-click="onSelectOp" ? ? ? ? ? > ? ? ? ? ? ? <el-table-column type="selection" width="55" align="center" /> ? ? ? ? ? ? <el-table-column label="序號" type="index" align="center" /> ? ? ? ? ? ? <el-table-column label="姓名" prop="name" align="center" /> ? ? ? ? ? ? <el-table-column label="手機號碼" prop="telephone" align="center" /> ? ? ? ? ? </el-table>
js部分:
?methods: {
? ? onSelectAll() {
? ? ? this.$refs.multipleTable.clearSelection();
? ? },
? ? selectItem(rows) {
? ? ? if (rows.length > 1) {
? ? ? ? const newRows = rows.filter((it, index) => {
? ? ? ? ? if (index == rows.length - 1) {
? ? ? ? ? ? this.$refs.multipleTable.toggleRowSelection(it, true);
? ? ? ? ? ? return true;
? ? ? ? ? } else {
? ? ? ? ? ? this.$refs.multipleTable.toggleRowSelection(it, false);
? ? ? ? ? ? return false;
? ? ? ? ? }
? ? ? ? });
? ? ? ? this.multipleSelection = newRows;
? ? ? } else {
? ? ? ? this.multipleSelection = rows;
? ? ? }
? ? ? this.userId = this.multipleSelection.length
? ? ? ? ? this.multipleSelection[0].guid
? ? ? ? : "";
? ? },
? ? onSelectOp(row) {
? ? ? this.$refs.multipleTable.clearSelection();
? ? ? this.$refs.multipleTable.toggleRowSelection(row, true);
? ? ? this.multipleSelection = [];
? ? ? this.multipleSelection.push(row);
? ? },
?
? ? handleCheckChange(data, checked, indeterminate) {
? ? ? if (checked) {
? ? ? ? this.$refs.dataTree.setCheckedKeys([data.lobbyCode]);
? ? ? }
? ? },
}multipleSelection變量用于保存用戶當前勾選的選項
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Vue3中的watch偵聽器和watchEffect高級偵聽器
這篇文章主要介紹了Vue3中的watch偵聽器和watchEffect高級偵聽器,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
淺談element中InfiniteScroll按需引入的一點注意事項
這篇文章主要介紹了淺談element中InfiniteScroll按需引入的一點注意事項,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
vue通過v-html指令渲染的富文本無法修改樣式的解決方案
這篇文章主要介紹了vue通過v-html指令渲染的富文本無法修改樣式的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05

