Javascript JSON中嵌套数组的AngularJS排序
目标:设置从服务器返回数据后可排序的表 从服务器返回的数据格式:Javascript JSON中嵌套数组的AngularJS排序,javascript,angularjs,Javascript,Angularjs,目标:设置从服务器返回数据后可排序的表 从服务器返回的数据格式: { "result" : { "code" : "OK", "msg" : "" }, "data" : [{ "row" : ["Fred", "64233", "197"] }, { "row" : ["Steve", "158879", "36"] }, { "row
{
"result" : {
"code" : "OK",
"msg" : ""
},
"data" : [{
"row" : ["Fred", "64233", "197"]
}, {
"row" : ["Steve", "158879", "36"]
}, {
"row" : ["Ted", "115222", "12"]
}
]
}
限制:无法更改服务器返回的数据格式。我想要排序的数据包含在“row”对象的数组中。我试着做一些事情,比如
<tr ng-repeat="roll in myWelcome.data" | orderBy:'roll.row[1]'">
<td>{{ roll.row[0] }}</td><td>{{ roll.row[1] }}</td><td>{{ roll.row[2] }}</td>
</tr>
我建议在从服务器返回数据时对其进行组织,以使其更可用。如果做不到这一点,您可以简单地实现一个知道在哪里查找的自定义过滤器
<tr ng-repeat="roll in myWelcome.data | customOrderBy:1">
我建议在从服务器返回数据时对其进行组织,以使其更可用。如果做不到这一点,您可以简单地实现一个知道在哪里查找的自定义过滤器
<tr ng-repeat="roll in myWelcome.data | customOrderBy:1">
我建议将您的数据转换为更标准的数据。它将使您能够更好地维护和解释代码
因为您不能更改服务器发送给您的数据的格式,所以您可以在数据到达客户端后更改它
fetchData(results) {
// Transform the results we get back from the server.
this.myWelcomeData = results.data.map(function(input) {
return {
name: input.row[0],
id: input.row[1],
age: input.row[2]
}
});
}
然后,您可以使用普通角度中继器语法进行订购:
<tr ng-repeat="roll in myWelcomeData" | orderBy:'id'">
我建议您将数据转换为更标准的格式。它将使您能够更好地维护和解释代码
因为您不能更改服务器发送给您的数据的格式,所以您可以在数据到达客户端后更改它
fetchData(results) {
// Transform the results we get back from the server.
this.myWelcomeData = results.data.map(function(input) {
return {
name: input.row[0],
id: input.row[1],
age: input.row[2]
}
});
}
然后,您可以使用普通角度中继器语法进行订购:
<tr ng-repeat="roll in myWelcomeData" | orderBy:'id'">
“但它不起作用”这是什么意思?不确定orderBy能否在无法向其传递对象属性名称的情况下起作用。没有orderBy,代码可以工作吗?可能必须为Ordering创建自定义筛选器数据在表中正确显示,但未排序。“但它不工作”这意味着什么?不确定orderBy在无法向其传递对象属性名称的情况下是否工作。没有orderBy,代码可以工作吗?可能必须为排序创建自定义筛选器。数据在表中正确显示,但未排序。很抱歉,有个新问题,但我应该将此函数放在哪里?我在$scope.getRequest=function(){后面试过,它说,(中间值)(中间值)。过滤器不是一个函数,你需要在angular应用程序中注册它。我更新了答案。很抱歉,这个新问题,但是我应该把这个函数放在哪里?我在$scope.getRequest=function()后面试过,它说,(中间值)(中间值)。筛选器不是一个函数您需要在angular应用程序中注册它。我更新了答案。这很有效。我将它放在$http.get语句之后,我将前两行更改为:。然后(函数(响应){$scope.myWelcome=response.data.data.map(函数(输入){这起作用了。我把它放在$http.get语句后面,我将前两行更改为:。然后(函数(响应){$scope.myWelcome=response.data.data.map(函数(输入){