2013-03-07 30 views
1

使用knockout.js - 我需要排序綁定到HTML表的observableArray。點擊列標題將排序數組ASC或DESC - 非常常見的任務。淘汰賽排序 - 耗時任務

問題是排序凍結了用戶界面約5秒。我知道這是因爲JS是單線程的。

我的問題是 - 是否有任何解決方法耗時的基因敲除排序?我的意思是如何顯示一些Loader指示器或類似的東西?

+0

你是排序observableArray本身還是你得到實際的數組和排序,然後把它放回可觀察? – Tetaxa 2013-03-07 08:17:49

+0

數組中有多少條記錄?也許最好在服務器上分類並使用分頁? – 2013-03-07 08:20:34

+0

問題「解決」 - 請看看我的答案。謝謝! – JohnnyBzz 2013-03-07 08:57:23

回答

1

問題「解決」 - 排序數組實際上是相當快的。問題是頁面上重新呈現HTML元素。其他用戶

諮詢:排序基本JS數組似乎(但我沒有衡量)比分類觀察到的陣列快一點,例如:

這樣速度更快:

anObsArray().sort(--sorting func here--); // notice brackets after name of anObsArray 
anObsArray().valueHasMutated(); // <-- this line is important 

這個:

anObsArray.sort(--sorting func here--);