在NG-重复使用排序依据客户订单 [英] Custom order using orderBy in ng-repeat
问题描述
我有这样的对象:
=学生{名称:'Aa_Student',等级:'A_Class},
{名称:'Ab_Student',等级:'A_Class},
{名称:'Ac_Student',等级:'B_Class},
{名称:'Ba_Student',等级:'B_Class},
{名称:'Bb_Student',等级:'C_Class},
{名称:'Bc_Student',等级:'C_Class'}
比方说,招生对象是洗牌。我用NG-重复显示的数据。我想在自定义的顺序对象进行排序。
例如,我要显示这样的数据:
名称类
-----------------------------
Ac_Student B_Class
Ba_Student B_Class
Aa_Student A_Class
Ab_Student A_Class
Bb_Student C_Class
Bc_Student C_Class
所以基本上,我想通过学生的班级订购,但它B_Class至上,那么A_Class,然后C_Class。另外,我想学生按字母顺序命名命令。我怎样才能做到这一点?
HTML
<表>
< TR NG重复=学生的学生|排序依据:customOrder>
...
< / TR>
< /表>
控制器:
$ scope.customOrder =功能(学生){
$ scope.students = $过滤器('排序依据')(学生,函数(){ });
};
你可以创建自定义排序筛选请看这里的 http://jsbin.com/lizesuli/1/edit
HTML
< p NG重复=S学生| customSorter:'类'> {{s.name}} - {{s.class}}< / p>
< / DIV>
angularjs过滤器:
app.filter('customSorter',函数(){ 功能CustomOrder(项目){
开关(项目){
案A_Class:
返回2; 案B_Class:
返回1; 案C_Class:
返回3;
}
} 返回功能(物品,场){
变种过滤= [];
angular.forEach(项目功能(项目){
filtered.push(项目);
});
filtered.sort(功能(A,B){
回报(CustomOrder(的A.class)GT; CustomOrder(b.class)?1:-1);
});
返回过滤;
};
});
I have objects like this:
students = {name: 'Aa_Student', class: 'A_Class'},
{name: 'Ab_Student', class: 'A_Class'},
{name: 'Ac_Student', class: 'B_Class'},
{name: 'Ba_Student', class: 'B_Class'},
{name: 'Bb_Student', class: 'C_Class'},
{name: 'Bc_Student', class: 'C_Class'}
Let's say the students object is shuffled. I use ng-repeat to show the data. I want to sort the objects in the custom order.
For example, I want to show the data like this:
Name Class
-----------------------------
Ac_Student B_Class
Ba_Student B_Class
Aa_Student A_Class
Ab_Student A_Class
Bb_Student C_Class
Bc_Student C_Class
So basically, I want to order by student's class, but it B_Class comes first, then A_Class, then C_Class. Also, I want to order by students name in alphabetic order. How can I do this?
HTML:
<table>
<tr ng-repeat="student in students | orderBy:customOrder">
...
</tr>
</table>
Controller:
$scope.customOrder = function(student) {
$scope.students = $filter('orderBy')(student, function() {
});
};
Hi you can create custom sort filter please see here http://jsbin.com/lizesuli/1/edit
html:
<p ng-repeat="s in students |customSorter:'class'">{{s.name}} - {{s.class}} </p>
</div>
angularjs filter:
app.filter('customSorter', function() {
function CustomOrder(item) {
switch(item) {
case 'A_Class':
return 2;
case 'B_Class':
return 1;
case 'C_Class':
return 3;
}
}
return function(items, field) {
var filtered = [];
angular.forEach(items, function(item) {
filtered.push(item);
});
filtered.sort(function (a, b) {
return (CustomOrder(a.class) > CustomOrder(b.class) ? 1 : -1);
});
return filtered;
};
});
这篇关于在NG-重复使用排序依据客户订单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!