在angularjs二维数组通过订购 [英] Order by in 2d array in angularjs

查看:121
本文介绍了在angularjs二维数组通过订购的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有是对象的数组,每个对象还包含在其他angularJS嵌套数组。通常有2-D数组,我想显示将由嵌套数组进行排序的数组值命名为任务。

下面是我的code。
谢谢你是进步...

  VAR应用= angular.module(应用,[])。控制器(CTRL1',函数($范围){
    $ scope.record = [
         {UNIQUEID:PP-12,产品名称:吉姆,状态:批准,任务:['XX','呃']},
         {UNIQUEID:PP-11,产品名称:吉姆,状态:已取消,任务:AA,VY','SD']},
         {UNIQUEID:PP-45,产品名称:尼克,状态:待定,任务:AV]},
         {UNIQUEID:PP-32,产品名称:托马斯,状态:已取消,任务:['ZC','在'YM','下']},
         {UNIQUEID:PP-01,产品名称:托马斯,状态:待定,任务:['XY','FR']},
         {UNIQUEID:PP-09,产品名称:尼克,状态:批准,任务:['AA','SD',CF]},
         {UNIQUEID:PP-23,产品名称:丽娜,状态:'请求',任务:AV,BS,嗯,TR]},
         {UNIQUEID:PP-39,产品名称:吉姆,状态:待定,任务:['ZC']}
    ];
 });<表边框=1>
    <&THEAD GT;
    &所述; TR>
        < TD>唯一ID< / TD>
        < TD>名称和LT; / TD>
        < TD>状态和LT; / TD>
        < TD>任务和LT; / TD>
    < / TR>
    < / THEAD>    < TBODY NG重复=数据记录>
    < TR NG重复=计划data.tasks轨道由$指数|排序依据:任务>
        &所述; TD> {{data.uniqueID}}< / TD>
        &所述; TD> {{data.Name}}< / TD>
        &所述; TD> {{data.status}}< / TD>
        &所述; TD> {{}计划}< / TD>
    < / TR>
    < / TBODY>
< /表>


解决方案

只能使用一个循环,创建一个新的有序数组,尝试:

  .filter(RecordFilter的功能(){
  返回功能(记录){
    VAR ARR = [];
    angular.forEach(记录功能(记录){
      angular.forEach(record.tasks,功能(计划){
        arr.push(angular.extend({},记录{计划:计划}))
      })
    });
    返回arr.sort(功能(A,B){
      返回a.plan> b.plan? 1:-1
    })
  }
})

 <&TBODY GT;
< TR NG重复=数据记录| RecordFilter的轨道由$指数>
    &所述; TD> {{data.uniqueID}}< / TD>
    &所述; TD> {{data.Name}}< / TD>
    &所述; TD> {{data.status}}< / TD>
    &所述; TD> {{data.plan}}< / TD>
< / TR>
< / TBODY>

演示

There is an array of objects and each object also contains another nested array in angularJS. Typically there is 2-d array and I want to display the array value which will be ordered by the nested array named 'tasks'.

Here is my code. Thanks is advance...

var app = angular.module('app',[]).controller('ctrl1', function($scope){
    $scope.record = [
         {uniqueID : 'pp-12', Name : 'Jim', status : 'Approved', tasks : ['xx', 'er'] },
         {uniqueID : 'pp-11', Name : 'Jim', status : 'Canceled', tasks : ['aa', 'vy','sd'] },
         {uniqueID : 'pp-45', Name : 'Nick', status : 'Pending', tasks : ['av'] },
         {uniqueID : 'pp-32', Name : 'Thomas', status : 'Canceled', tasks : ['zc', 'ym','at', 'lt'] },
         {uniqueID : 'pp-01', Name : 'Thomas', status : 'Pending', tasks : ['xy', 'fr'] },
         {uniqueID : 'pp-09', Name : 'Nick', status : 'Approved', tasks : ['aa', 'sd','cf'] },
         {uniqueID : 'pp-23', Name : 'Lina', status : 'Requested', tasks : ['av', 'bs','ay','tr'] },
         {uniqueID : 'pp-39', Name : 'Jim', status : 'Pending', tasks : ['zc'] }
    ];
 });



<table border="1">
    <thead>
    <tr>
        <td>Unique ID</td>
        <td>Name</td>
        <td>Status</td>
        <td>tasks</td>
    </tr>
    </thead>

    <tbody ng-repeat="data in  record">
    <tr ng-repeat="plan in data.tasks track by $index | orderBy : tasks" >
        <td> {{data.uniqueID}}</td>
        <td> {{data.Name}}</td>
        <td> {{data.status}}</td>
        <td> {{plan}}</td>
    </tr>
    </tbody>
</table>

解决方案

Can use only a loop, creating a new sorted array, Try:

.filter("recordFilter", function(){
  return function(records){
    var arr = [];
    angular.forEach(records, function(record){
      angular.forEach(record.tasks, function(plan){
        arr.push(angular.extend({}, record, {plan:plan}))
      })
    });
    return arr.sort(function(a,b){
      return a.plan > b.plan ? 1 : -1
    })
  }
})

<tbody>
<tr ng-repeat="data in record | recordFilter track by $index">
    <td> {{data.uniqueID}}</td>
    <td> {{data.Name}}</td>
    <td> {{data.status}}</td>
    <td> {{data.plan}}</td>
</tr>
</tbody>

Demo

这篇关于在angularjs二维数组通过订购的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆