【发布时间】:2015-02-08 11:49:37
【问题描述】:
看来,当我在 ng-repeat 中使用 orderBy 过滤器时,为了按某些属性按字母顺序对对象数组进行排序,我得到的结果是错误的。 具体来说,orderBy 首先放置所有以带有重音符号的字母开头的字符串,例如 Ά、Έ、Ή、Ί 等,而忽略它们在字母表中的位置。 在我的示例中,我创建了一个对象数组
$scope.words = [
{id: 1, name: "Αντώνης"},
{id: 2, name: "Ίκαρος"},
{id: 3, name: "Έλλη"},
{id: 4, name: "Βασίλης"},
{id: 5, name: "Γιάννης"},
{id: 6, name: "Δημήτρης"},
{id: 7, name: "Ζήσης"},
{id: 8, name: "Ηρακλής"},
{id: 9, name: "Θανάσης"},
];
并使用 ng-repeat 指令创建列表:
<div ng-repeat="w in words | orderBy:'name'">{{w.name}}</div>
我得到的排序结果是:
Έλλη, Ίκαρος, Αντώνης, Βασίλης, Γιάννης, Δημήτρης, Ζήσης, Ηρακλής, Θανάσης
虽然正确的是:
Αντώνης, Βασίλης, Γιάννης, Δημήτρης, Έλλη, Ζήσης, Ηρακλής, Θανάσης, Ίκαρος
见小提琴here。
有没有办法纠正这种行为?如何创建自己的 orderBy 过滤器?
【问题讨论】:
-
你可以提供你自己的谓词/比较函数给orderBy filer。见code.angularjs.org/1.3.7/docs/api/ng/filter/orderBy
标签: javascript angularjs sorting sql-order-by ng-repeat