我正在尝试使用Angular中的ng-repeat对客户列表进行排序,以便列具有评级" Hot"," Warm"和" Cold"按顺序出现。目前,当它对“评级”列进行排序时,它按字母顺序排列" Cold"," Hot"和" Warm"。我将如何按字母顺序排序?是否使用自定义指令创建与评级值相关的自定义属性,然后使用"跟踪"?
这是一个CodePen,其中包含按字母顺序排序的工作示例:
http://codepen.io/MattSchultz/pen/VeBpaQ
<li id="listCont" ng-repeat="client in clients | orderBy:col:reverse as results" ng-class-even="'even'">
<ul class="clients">
<li>{{client.Name}}</li>
<li>{{client.AnnualRevenue | currency}}</li>
<li ng-class="classy('{{client.Rating}}')">{{client.Rating}}</li>
</ul>
</li>
答案 0 :(得分:3)
如果您将一个字符串(即对象属性名称)作为第一个参数传递给orderBy filter,就像您在示例中所做的那样,它将尝试按字母顺序排序。要更改此行为,您需要传递自定义排序功能。
例如:
function ratingSort(val) {
return ['Cold', 'Warm', 'Hot'].indexOf(val.Rating);
};
此函数返回介于-1(即val.Rating
值不在数组中)和2(即&#39; Hot&#39;,其在数组中的索引2处)之间的数字。返回的数字用于确定排序顺序。
以下是一个工作示例:CodePen