我有一群人firstName
和lastName
s。我希望ng-repeat
通过它们然后orderBy: 'lastName'
。这很好。
但是,person
数组中的某些people
只有一个名字。我希望能够按姓氏排序,每当找到只有 名字的人时,将该名字视为姓氏,即。第一个名字的首字母用其余的姓氏按字母顺序排列(希望有意义......)
是在我的控制器中编写函数然后在orderBy:
表达式中调用该变量的情况吗?我试过了,但它不起作用:
控制器:
self.nameOrder = function(thisOne) {
if (thisOne.lastName == null) {
thisOne.firstName == thisOne.lastName;
}
}
查看:
<p ng-repeat="name in people | orderBy: 'lastName.nameOrder()' ">{{lastName}}</p>
我知道上面的内容可能完全错了,但我认为最好至少展示一直在尝试的东西,这样我的意图就更清楚了:/
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:2)
该函数应该是一个getter,即返回orderBy
将用于比较所有用户的值。
您的功能不会返回任何内容。此外,您没有将函数作为参数传递给orderBy
。代码应该是:
self.nameOrder = function(thisOne) {
// return lastName, or firstName if lastName is null
return thisOne.lastName || thisOne.firstName;
}
并且html应该使用
ng-repeat="name in people | orderBy:vm.nameOrder"
(假设vm
是用于控制器的别名)
答案 1 :(得分:-1)
问题可能出在:
thisOne.firstName == thisOne.lastName;
那一行应该是:
thisOne.firstName = thisOne.lastName;