Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON中嵌套数组的AngularJS排序_Javascript_Angularjs - Fatal编程技术网

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(函数(输入){