2016-09-06 44 views
0

我有嵌套纳克重复从服务器提取数据:使用ORDERBY为值在阵列

<div ng-repeat="x in result | filter:sellbox " > 
       <div ng-repeat="z in x.data | orderBy:'??' " > 


      {{x.rate_type}} to {{x.name}} {{z[1]}} 
     </div> 

     </div> 

这是服务器的一部分:

"result":[ 
     { 
     "id":"BNLN_USD", 
     "code":"BNLN", 
     "name":"National Bank Of Georgia (BNLN)", 
     "currency":"USD", 
     "rate_type":"reference", 
     "color":"#4b4a4b", 
     "legendIndex":1, 
     "data":[ 
      [ 
       1473033600000, 
       2.2938 
      ] 
     ] 
     }, 
     { 
     "id":"BAGA_USD_B", 
     "code":"BAGA", 
     "name":"Bank Of Georgia (BAGA)", 
     "currency":"USD", 
     "rate_type":"buy", 
     "color":"#ed7623", 
     "dashStyle":"shortdot", 
     "legendIndex":2, 
     "data":[ 
      [ 
       1473033600000, 
       2.25 
      ] 
     ] 
     } 

Z [1]给出该分部的价值为2.2938和2.25。如何使用orderBy,以便按z [1]的降序排列结果。

回答

1

由于AngularJS 1.3.0-rc.5,orderBy过滤器将自动使用其项目对数组进行排序,如果没有提供附加参数。

<div ng-repeat="z in x.data | orderBy">{{item}}</div>

+0

不在我的情况下:) – NewLuckyProgramer

+0

注意:如果您注意到数字未按预期排序,请确保它们实际上保存为数字而不是字符串。 –

0

你不能排序依据是您数据是数组的数组,所以你必须调用自定义排序依据功能的原因。

在你的控制器

$scope.customOrder = function (content) { 
    return content.sort()[0]; 
} 

在HTML通过customOrder功能,并通过真正让它降

<div ng-repeat="x in result | filter:sellbox " > 
    <div ng-repeat="z in x.data | orderBy:customOrder:true"> 
     {{x.rate_type}} to {{x.name}} {{z[1]}} 
    </div> 
</div> 
+0

谢谢Max,但它也没有工作。 – NewLuckyProgramer

+0

你能告诉我什么是在这里失踪,所以我可以帮助它 –

+0

它并没有说有什么缺失。我实现了你所说的一切,并且控制台记录了一些行来检查customOrder是否正在工作(它是)。返回内容是我们需要的东西吗? – NewLuckyProgramer

0

我设法通过映射我的结​​果来解决这个问题:

JS :

$rootScope.bank_data = $rootScope.result.map(function(x){ 

    return { 
     rate_type: x.rate_type, 
     name: x.name, 
     value :x.data[0][1] 

     }; 
}) 

HTML:

<input type="searchbox" ng-model="sellbox" ng-hide="buy" > 
      <div ng-repeat="m in bank_data | filter:sellbox | orderBy:'-value'" > {{m.rate_type}} {{m.name}} {{m.value}}</div> 

这样,我成功地显示我想排序的阵列和它的工作就好了。感谢大家的帮助。