首頁  >  文章  >  web前端  >  layui中table的sort排序介紹

layui中table的sort排序介紹

尚
轉載
2019-11-23 17:30:0219834瀏覽

layui中table的sort排序介紹

今天來談談table sort的那點事。預告一下,目的是做到前台排序還有伺服器排序區分開,目前的table的分頁實際是比較「亂」的,相信很多用的有一段時間的特別是做server排序的同學都會多多少少遇到不正常的情況。

推薦:layui教程

先看看目前layui自帶的排序的效果,中文按字典排序這些不是本次討論的重點,先看看如果存在整數負數還有0出現的情況

layui中table的sort排序介紹那麼是不是調整一下sort裡面的邏輯就可以了讓它對負數和0的判斷邏輯對了就好了。這個其實也不是這次討論的重點。

那麼重點是,server排序,實際上絕大部分的table的排序不會只是單頁的這樣子簡單的排序,而是把條件傳到後台讓後台排序,那麼官方給出的一般是監聽sort然後reload,把條件傳過去,這些都很ok,邏輯都沒問題。

but實際得到的效果呢?因為目前table沒有區分前台排序還是server排序,在接收到資料之後再渲染表格的時候判斷到有initSort,那麼會再次將資料排序,然後顯示,這就存在一個非常嚴重的問題!

明明server已經排好序了,為啥還要js裡面再sort一下,更嚴重的是,能保證sort出來的結果跟後台排序的規則出來的結果一致麼?拿什麼保證呢?

看看下面的程式碼監聽reload的時候然後模擬後台把資料按照負數

程式碼:

layui中table的sort排序介紹效果

layui中table的sort排序介紹可能你會覺得跟前面沒啥區別呀,排序的時候還是錯了呀,這正是異常的地方。看看我模擬回傳的data裡面的結構吧

原始的data:

layui中table的sort排序介紹模擬的介面回傳的data:

layui中table的sort排序介紹這個回傳之後顯然顯示的效果跟實際資料的順序對不上號

原因就是上面說的,實際發後台排序的時候到了渲染的時候還是要走一次前台排序,等於是做了一個畫蛇添足的處理。實際上如果我們定義成server排序回傳的資料就是要顯示的順序了。

絕對不能再走前端sort一下這個邏輯,不然後台排序的意義是什麼還有如何保證邏輯跟後台是一致的,一致的話頂多算是一個無用功,但是如果不能保證一致,這個就是一個大事故了。

解決方案:提供使用者一個設定項,決定是前台排序還是server排序。修改如下

需要修改的原始程式碼區域

layui中table的sort排序介紹

修改之後的對應區域的程式碼:

##測試的table在render的時候加入了sortType的設定layui中table的sort排序介紹

最後是sort的監聽layui中table的sort排序介紹

最後的效果layui中table的sort排序介紹

##完整的測試程式碼還有對table.js的對應修改的位址: https://pan.baidu.com/s/1OjwwVmjy02wRQ0rT1euLlQ

以上是layui中table的sort排序介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:layui.com。如有侵權,請聯絡admin@php.cn刪除