data layui table 排序_浅谈layui中table的sort排序
table模塊是layui框架最核心的組成之一,它用于對表格進(jìn)行一些列功能和動態(tài)化數(shù)據(jù)操作,本文介紹了layui中table的sort排序,解決了在我們使用sort排序時可能遇到的一些問題。
今天來談?wù)則able sort的那點(diǎn)事。預(yù)告一下,目的是做到前臺排序還有服務(wù)器排序區(qū)分開,目前的table的分頁實(shí)際是比較“亂”的,相信很多用的有一段時間的特別是做server排序的同學(xué)都會多多少少遇到不正常的情況。
先看看目前l(fā)ayui自帶的排序的效果,中文按字典排序這些不是本次討論的重點(diǎn),先看看如果存在整數(shù)負(fù)數(shù)還有0出現(xiàn)的情況
那么是不是調(diào)整一下sort里面的邏輯就可以了讓它對負(fù)數(shù)和0的判斷邏輯對了就好了。這個其實(shí)也不是這次討論的重點(diǎn)。
那么重點(diǎn)是,server排序,實(shí)際上絕大部分的table的排序不會只是單頁面的這樣子簡單的排序,而是把條件傳到后臺讓后臺排序,那么官方給出的一般是監(jiān)聽sort然后reload,把條件傳過去,這些都很ok,邏輯都沒問題。
but實(shí)際得到的效果呢?因?yàn)槟壳皌able沒有區(qū)分前臺排序還是server排序,在接收到數(shù)據(jù)之后再渲染表格的時候判斷到有initSort,那么會再次將數(shù)據(jù)排序,然后顯示,這就存在一個非常嚴(yán)重的問題!
明明server已經(jīng)排好序了,為啥還要js里面再sort一下,更嚴(yán)重的是,能保證sort出來的結(jié)果跟后臺排序的規(guī)則出來的結(jié)果一致么?拿什么保證呢?
看看下面的代碼監(jiān)聽reload的時候然后模擬后臺把數(shù)據(jù)按照負(fù)數(shù)<0
代碼:
效果
可能你會覺得跟前面沒啥區(qū)別呀,排序的時候還是錯了呀,這正是異常的地方。看看我模擬返回的data里面的結(jié)構(gòu)吧
原始的data:
模擬的接口返回的data:
這個返回之后顯然顯示的效果跟實(shí)際數(shù)據(jù)的順序?qū)Σ簧咸?/p>
原因就是上面說的,實(shí)際發(fā)后臺排序的時候到了渲染的時候還是要走一次前臺排序,等于是做了一個畫蛇添足的處理。實(shí)際如果我們定義成server排序返回的數(shù)據(jù)就是要顯示的順序了。
絕對不能再走前端sort一下這個邏輯,不然后臺排序的意義是什么還有如何保證邏輯跟后臺是一致的,一致的話頂多算是一個無用功,但是如果不能保證一致,這個就是一個大事故了。
解決方案:提供用戶一個配置項,決定是前臺排序還是server排序。修改如下
需要修改的原始代碼區(qū)域
修改之后的對應(yīng)區(qū)域的代碼:
測試的table在render的時候加入了sortType的配置
最后是sort的監(jiān)聽
最后的效果
完整的測試代碼還有對table.js的對應(yīng)修改的地址: https://pan.baidu.com/s/1OjwwVmjy02wRQ0rT1euLlQ
更多web前端開發(fā)知識,請查閱 HTML中文網(wǎng) !!
總結(jié)
以上是生活随笔為你收集整理的data layui table 排序_浅谈layui中table的sort排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDOS流量清洗(ddos流量清洗配置)
- 下一篇: guid判断是否有效_让我们一起啃算法-