2014-10-27 54 views
5

我有一個包含國家如何使用角度orderBy過濾器按字母順序對字符串數組進行排序?

$scope.model = { 
    name: "foo", 
    countriesVisited: ["CA", "AR", "GB", "FR", "MX", "AU", "IE", "RU", "IT", "ES", "IN", "US", "NL", "DE", "CL", "BR", "JP", "NZ", "PL"] 
    } 

使用的NG-重複指令列表列出他們在他們的顯示順序的模型。 放置一個orderBy過濾器並不排序這些項目,但是這個順序看起來是隨機的。看到這個plunker

刪除過濾器並觀察輸出班次。粘貼回來,它是在一個奇怪的順序。

有沒有辦法讓countriesVisited數組無需移動到它自己的$ scope變量?

回答

13
<li ng-repeat="country in model.countriesVisited | orderBy:'toString()'"> 
+1

由於值已經是字符串,是不是有一種較不貪心的方式來排序呢?我只是好奇 – glepretre 2014-10-29 14:46:50

2

將您的訂單更改爲orderBy:'toString()'。基元不默認排序,但您可以像我們這裏所做的那樣傳遞一個函數。

+0

好 - 澄清,這是將數組中的每個項目從字符串類型轉換爲字符串對象,正確嗎?爲什麼基元不會默認排序?我已閱讀了字符串和字符串之間的區別,但從未在實踐中遇到它 - 感謝您的幫助! – tim 2014-10-27 03:14:57

+1

orderBy過濾器期待一個對象。請查看[https://docs.angularjs.org/api/ng/filter/orderBy](https://docs.angularjs.org/api/ng/filter/orderBy)上的文檔。您會看到三個選項可用於表達式:要排序的值的字符串,函數或字符串或函數的數組。 – rtucker88 2014-10-27 03:22:08