我有一个包含照片详情的JSON,我想根据JSON中包含的id订购转发器:
ng-repeat="photo in photos | orderBy:'id'"
但结果顺序是这样的:
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2 [..]
如何解决此订购问题?
更新:解决方案
即使下面提供的答案都有效,我也提供了最佳解决方案here:
在我的PHP脚本中编码JSON时添加JSON_NUMERIC_CHECK
,就可以了。
答案 0 :(得分:3)
您应该创建一个用于订购的自定义函数。
$scope.integerId= function(photo) {
return parseInt(photo.id, 10);
};
并将其用作
ng-repeat="photo in photos | orderBy:integerId"
演示
答案 1 :(得分:0)
我相信已经说过这种情况,因为你的照片'ID被解释为字符串,因此orderBy过滤器正在进行字典排序。
要解决此问题,您必须将ID转换为数字。你可以做的是创建一个新的过滤器,将id转换为数字:
angular.module('my.filters', []).filter("idToNumber", [function() {
return function(value) {
return value.map(function(item) {
item.id = parseInt(id, 10);
return item;
);
}
}]);
然后你可以像这样使用它:
ng-repeat="photo in photos | idToNumber | orderBy:'id'"