日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html+单选+回显,VUE+elementUI表格多选框实现单选以及数据回显时toggleRowSelection失效问题...

發布時間:2024/9/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html+单选+回显,VUE+elementUI表格多选框实现单选以及数据回显时toggleRowSelection失效问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、多選框單選

>

@select-all="onSelectAll" 全選是觸發的事件

@selection-change="selectItem" 單個去勾選時觸發的事件(勾選有變化時觸發)

@row-click="onSelectOp" 點擊那一行數據觸發的事件

ref="multipleTable"

ref 被用來給DOM元素或子組件注冊引用信息。引用信息會根據父組件的 $refs 對象進行注冊。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子組件上,引用信息就是組件實

注意:只要想要在Vue中直接操作DOM元素,就必須用ref屬性進行注冊

1、@select-all="onSelectAll"

全選是觸發自定義的onSelectAll() 函數,把所有選項清空,

this.$refs.multipleTable.clearSelection();clearSelection()這個函數是自帶的,比如日期的getFullYear()

2、@selection-change="selectItem"

單個去勾選時觸發自定義的selectItem函數

@selection-change事件會默認傳行數據進去,用selectItem(rows)的rows接收就好,rows所選行數據的數組

this.$refs.multipleTable.toggleRowSelection(it, true);

toggleRowSelection這個函數需要傳某行數據,true表示勾選,false表示不勾選,@selection-change默認是勾選的,也就是說這個事件傳進來被選中的數據如果你還是想勾選,那么不需要任何操作,除非你想不勾選,那么就把那條數據用false來去掉勾選。

selectItem這個函數我自定義了,一旦勾選多于一行數據,就把上一個勾選去掉,保留最后一個勾選,用過濾器來過濾,把新的(只有一行數據)的數組賦給自定義的數組,方便調用

3、@row-click="onSelectOp"

點擊那一行數據觸發的事件默認傳點擊那行的數據,自定義onSelectOp(row)函數,

用row來接收點擊的那行數據,

先把所有的選項清空this.$refs.multipleTable.clearSelection();

再把點擊的那行勾選this.$refs.multipleTable.toggleRowSelection(row, true);

把自定義數組清空this.selectlist = [];

把新勾選的數據push進數組this.selectlist.push(row);

methods: {

onSelectAll() {this.$refs.multipleTable.clearSelection();

},

selectItem(rows) {if (rows.length > 1) {var 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.selectlist =newRows;

}else{this.selectlist =rows;

}

},

onSelectOp(row) {

//this.$refs.multipleTable.clearSelection();不需要this.$refs.multipleTable.toggleRowSelection(row, true);//有這個就夠了,因為一旦勾選的內容有變化,那么就會觸發selectItem(rows)這個函數

//this.selectlist =[];不需要

//this.selectlist.push(row);不需要

},

二、數據回顯toggleRowSelection失效問題

失效例子:

comeBackfromEidt() {

let id= parseInt(this.$route.params.id);this.items.forEach(x =>{if (x.id ==id) {this.$refs.multipleTable.toggleRowSelection(x, true);

}

});

},

我是從這個頁面勾選數據然后跳轉到另一個頁面,然后返回的時候想回顯勾選的數據,寫了上面代碼,發現回顯不了!!!

后來查到需要加上$nextTick才可以

以下代碼可行:

comeBackfromEidt() {

let id= parseInt(this.$route.params.id);this.items.forEach(x =>{if (x.id ==id) {this.$nextTick(() =>{this.$refs.multipleTable.toggleRowSelection(x, true);

});

}

});

},

或者把$nextTick放在forEach外面也可以。

$nextTick 是在下次 DOM 更新循環結束之后執行延遲回調,在修改數據之后使用 $nextTick,則可以在回調中獲取更新后的 DOM

在我們用vue時,我們經常用到一個方法是this.$nextTick,相信你也用過。我常用的場景是在進行獲取數據后,需要對新視圖進行下一步操作或者其他操作時,發現獲取不到dom。

因為賦值操作只完成了數據模型的改變并沒有完成視圖更新

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的html+单选+回显,VUE+elementUI表格多选框实现单选以及数据回显时toggleRowSelection失效问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。