看来,当我在ng-repeat内部使用orderBy过滤器时,为了按某些属性按字母顺序排列对象数组,我得到的结果是错误的。 具体而言,orderBy首先放置所有以重音符号(如Ά,Έ,Ή,Ί等)开头的字符串,忽略它们在字母表中的位置。 在我的例子,我创建的对象AngularJS ng-repeat 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-重复指令创建一个列表:我得到
<div ng-repeat="w in words | orderBy:'name'">{{w.name}}</div>
的排序结果为:
Έλλη, Ίκαρος, Αντώνης, Βασίλης, Γιάννης, Δημήτρης, Ζήσης, Ηρακλής, Θανάσης
虽然正确的将是:
Αντώνης, Βασίλης, Γιάννης, Δημήτρης, Έλλη, Ζήσης, Ηρακλής, Θανάσης, Ίκαρος
看小提琴here。
反正有纠正这种行为吗?我怎样才能创建我自己的orderBy过滤器?
你可以提供你自己的谓词/比较函数orderBy filer。请参阅https://code.angularjs.org/1.3.7/docs/api/ng/filter/orderBy – lujcon 2015-02-08 12:27:08