您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)layui使用table的sort排序的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
先看看目前l(fā)ayui自帶的排序的效果,中文按字典排序這些不是本次討論的重點(diǎn),先看看如果存在整數(shù)負(fù)數(shù)還有0出現(xiàn)的情況
那么是不是調(diào)整一下sort里面的邏輯就可以了讓它對(duì)負(fù)數(shù)和0的判斷邏輯對(duì)了就好了。這個(gè)其實(shí)也不是這次討論的重點(diǎn)。
那么重點(diǎn)是,server排序,實(shí)際上絕大部分的table的排序不會(huì)只是單頁(yè)面的這樣子簡(jiǎn)單的排序,而是把條件傳到后臺(tái)讓后臺(tái)排序,那么官方給出的一般是監(jiān)聽sort然后reload,把條件傳過(guò)去,這些都很ok,邏輯都沒(méi)問(wèn)題。
but實(shí)際得到的效果呢?因?yàn)槟壳皌able沒(méi)有區(qū)分前臺(tái)排序還是server排序,在接收到數(shù)據(jù)之后再渲染表格的時(shí)候判斷到有initSort,那么會(huì)再次將數(shù)據(jù)排序,然后顯示,這就存在一個(gè)非常嚴(yán)重的問(wèn)題!
明明server已經(jīng)排好序了,為啥還要js里面再sort一下,更嚴(yán)重的是,能保證sort出來(lái)的結(jié)果跟后臺(tái)排序的規(guī)則出來(lái)的結(jié)果一致么?拿什么保證呢?
看看下面的代碼監(jiān)聽reload的時(shí)候然后模擬后臺(tái)把數(shù)據(jù)按照負(fù)數(shù)<0<正數(shù)這個(gè)規(guī)則返回的data,實(shí)際reload之后是什么樣子吧。
代碼:
效果
可能你會(huì)覺(jué)得跟前面沒(méi)啥區(qū)別呀,排序的時(shí)候還是錯(cuò)了呀,這正是異常的地方??纯次夷M返回的data里面的結(jié)構(gòu)吧
原始的data:
模擬的接口返回的data:
這個(gè)返回之后顯然顯示的效果跟實(shí)際數(shù)據(jù)的順序?qū)Σ簧咸?hào)
原因就是上面說(shuō)的,實(shí)際發(fā)后臺(tái)排序的時(shí)候到了渲染的時(shí)候還是要走一次前臺(tái)排序,等于是做了一個(gè)畫蛇添足的處理。實(shí)際如果我們定義成server排序返回的數(shù)據(jù)就是要顯示的順序了。
絕對(duì)不能再走前端sort一下這個(gè)邏輯,不然后臺(tái)排序的意義是什么還有如何保證邏輯跟后臺(tái)是一致的,一致的話頂多算是一個(gè)無(wú)用功,但是如果不能保證一致,這個(gè)就是一個(gè)大事故了。
解決方案:提供用戶一個(gè)配置項(xiàng),決定是前臺(tái)排序還是server排序。修改如下
需要修改的原始代碼區(qū)域
修改之后的對(duì)應(yīng)區(qū)域的代碼:
測(cè)試的table在render的時(shí)候加入了sortType的配置
最后是sort的監(jiān)聽
最后的效果
關(guān)于layui使用table的sort排序的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。