Javascript 按嵌套属性排列的角度顺序可能缺失?
我有一个包含项目的列表,正如您在plunkr中看到的,我正在尝试使用标准的Javascript 按嵌套属性排列的角度顺序可能缺失?,javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我有一个包含项目的列表,正如您在plunkr中看到的,我正在尝试使用标准的orderByfilter对表进行排序: <tr ng-repeat="item in list | orderBy: sorting.field : sorting.reverse"> <!-- some code goes here --> </tr> 安古拉斯普朗克 身份证件 标题 喜欢 分享 评论 {{item.id} {{item.title} {{item.re
orderBy
filter对表进行排序:
<tr ng-repeat="item in list | orderBy: sorting.field : sorting.reverse">
<!-- some code goes here -->
</tr>
安古拉斯普朗克
身份证件
标题
喜欢
分享
评论
{{item.id}
{{item.title}
{{item.reactions.like}
{{item.reactions.share}
{{item.reactions.comment}
*单击表格标题以对结果进行排序
您可以做的最常见的事情是
<td>
<span ng-if="item.reactions.comment">{{item.reactions.comment}}</span>
<span ng-if="!item.reactions.comment">Zero</span>
</td>
{{item.reactions.comment}
零
如果您找到了更精确的方法,请在此处更新。您应该在显示数据之前修复数据,而不是通过排序(您可以应用)
var possibleReactions = ['like', 'share', 'comment'];
for (var i = 0; i < $scope.list.length; i++) {
var item = $scope.list[i];
for (var j = 0; j < possibleReactions.length; j++) {
var reaction = possibleReactions[j];
if(!item.reactions[reaction]) item.reactions[reaction] = 0;
}
}
var-possibleReactions=['like','share','comment'];
对于(变量i=0;i<$scope.list.length;i++){
var item=$scope.list[i];
对于(var j=0;j
查看下面的工作代码段
var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.list=[{
id:1,
标题:“测试1”,
反应:{
“喜欢”:7,
"份数":20,,
评论:100
}
}, {
id:2,
标题:“测试2”,
反应:{
“like”:5,
"分享":10,,
}
}, {
id:3,
标题:“测试3”,
反应:{
"like":4,,
"分享":1,,
}
}, {
id:4,
标题:“测试4”,
反应:{
"like":4,,
"分享":1,,
评论:2
}
}];
var possibleReactions=['like','share','comment'];
对于(变量i=0;i<$scope.list.length;i++){
var item=$scope.list[i];
对于(var j=0;j
安古拉斯普朗克
身份证件
标题
喜欢
分享
评论
{{item.id}
{{item.title}
{{item.reactions.like}
{{item.reactions.share}
{{item.reactions.comment}
*单击表格标题以对结果进行排序
创建自己的过滤器
angular
.module("app", [])
.controller("c", function ($scope) {
$scope.items = [
{id: 1, name: ""},
{id: 2, name: "a"},
{id: 3, name: "b"},
{id: 4, name: "c"},
{id: 5, name: ""},
{id: 6, name: "f"},
{id: 7, name: ""},
{id: 8, name: "z"},
];
})
.filter("emptyToEnd", function () {
return function (array, key) {
var present = array.filter(function (item) {
return item[key];
});
var empty = array.filter(function (item) {
return !item[key]
});
return present.concat(empty);
};
});
angular.bootstrap(document, ["app"]);
请参见工作示例您期望得到什么?如果没有注释,是否应将其视为0
,并在排序asc时显示在开头?为什么不能在将这些值分配给作用域之前修复它们?在咖啡中,items
中的item将为item.comments?=0。这并不能解决按此值排序的问题。而且,这样做会容易得多。{{item.reactions.comments | | 0}
。