2015-01-26 119 views
0

我正在製作一個小型應用程序,用於對用戶具有類似於遊戲排行榜的點列表進行排序。我已經在一個對象數組上設置了一個ng-repeat,並在不同的選項選擇上顯示了一個ng-show,以在列表中顯示一個跨度。跨度顯示不同的得分。AngularJS:OrderBy篩選器選項選擇

我在ng-repeat上添加了一個orderBy過濾器,所以列表從最大值過濾到最小值。例如,當選擇「創建線程」的選項時,「發佈讀取」和「已回覆帖子」的分數被隱藏,並且列表按照創建的線程數(從最大到最小)排序。

它適用於兩個選項值,但不適用於第三個。任何想法爲什麼?

   <tr ng-repeat="user in users | orderBy:['-created','-read','-replied']"> 
      <td> {{user.index}} </td> 
      <td> {{user.firstName}} {{user.lastName}}</td> 
      <td> 
       <span ng-show='discussionsSelect == "created"'>{{ user.created }}</span> 
       <span ng-show='discussionsSelect == "read"'>{{ user.read }}</span> 
       <span ng-show='discussionsSelect == "replied"'>{{ user.replied }}</span> 
      </td> 
      </tr> 
+0

您可以在plunker或jsfiddle中複製問題嗎?另外,請發佈一些背後的代碼? – SoluableNonagon 2015-01-26 19:04:26

+1

你爲什麼覺得不工作?你可以發佈一份清單和有序清單嗎? – 2015-01-26 19:04:50

+0

需要查看數據。訂單中的第三項只會在前兩項完全相同時發揮作用。也許你在這種情況下沒有任何數據。 – Scott 2015-01-26 19:06:44

回答

0

如果我正確地理解了這一點,那麼您沒有正確地做到這一點。您的列表將只能按「創建」進行排序。 orderBy子句的第二個值只有在找到兩個具有相同'created'的對象時纔會起作用。同樣,您的orderBy子句中的第三個值也是如此。如果兩個項目具有相同的「已創建」,然後具有相同的「讀取」值,那麼將只能使用它。
您將需要訂購一個變量,該變量根據所選的下拉菜單進行設置。您可以將其設置爲您的選擇綁定到的變量的名稱。我認爲這是討論選擇你的plnkr。

 <tr ng-repeat="user in users | discussionsSelect"> 
+0

它應該是'' – 2015-01-26 19:24:35

+0

謝謝。 @UlanMurzatayev - orderBy過濾器工作。 – JDH 2015-01-26 19:29:14