{
"@odata.count": 52,
"value": [
{
"@search.score": 0.58868027,
"LastDirSyncTime": "2015-02-27T08:22:22+00:00"
},
{
"@search.score": 0.58868029,
"LastDirSyncTime": "2015-03-27T08:22:22+00:00"
},
{
"@search.score": 0.60868029,
"LastDirSyncTime": "2014-03-27T08:22:22+00:00"
},
{
"@search.score": 0.58861029,
"LastDirSyncTime": "2014-03-27T08:22:22+00:00"
}
]
}
我有上面的json回复,我想orderBy
我已经使用了
var newdata = $filter('orderBy')(data, '@search.score');
但它会返回Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 0-0 [@] in expression [@search.score].
有没有办法让我的结果通过@search.score
键来订购?
答案 0 :(得分:0)
解析您的对象并从'@ search.score'中删除'@search'
$scope.abc= [
{
"score": 0.58,
"LastDirSyncTime": "2015-02-27T08:22:22+00:00"
},
{
"score": 0.59,
"LastDirSyncTime": "2015-03-27T08:22:22+00:00"
},
{
"score": 0.60,
"LastDirSyncTime": "2014-03-27T08:22:22+00:00"
},
{
"score": 0.52,
"LastDirSyncTime": "2014-03-27T08:22:22+00:00"
}
];
然后你可以使用'orderBy'(https://docs.angularjs.org/api/ng/filter/orderBy)
<table >
<tr>
<th>Score</th>
<th>LastDirSyncTime</th>
</tr>
<tr ng-repeat="a in abc | orderBy:'score'">
<td>{{a.score}}</td>
<td>{{a.LastDirSyncTime}}</td>
</tr>
</table>
答案 1 :(得分:0)
var newdata = $filter('orderBy')(data, '"@search.score"');
orderBy
期望表达式@search.score
未被识别为有效表达式。除了@
之外,它还包含.
,其解释方式与您预期的不同。
"@search.score"
是一个有效的常量字符串表达式,它被解释为属性名称。
我不会在属性名称中使用点。