2015-02-06 14 views
0

我的問題是: 我想使用ng-repeat對其子對象進行排序。在AngularJs中使用ng-repeat對象和對象排序

facets = { 
    'tm_mailbox': {buckets: [{key:'budlion', doc_count:1037}]}, 
     'tm_user': {buckets: [{key:'karl', doc_count:10}, {key:'kael2', doc_count:111}] }, 
    'tm_message': {buckets: [{key:'sylvia', doc_count:298}] }}; 

facets_ordered_keys = ['tm_user', 'tm_message', 'tm_mailbox'] 

默認情況下該對象將按A-Z排序。我想訂購該物品。

我用了兩個NG-重複,第一環路會讀取排序鍵和第二環路將被鍵,例如在僞代碼中的循環中讀取值:

for k in facets_ordered_keys: 
    print k 
    for v in facets[k]: 
     print v 

但我不能讀在第2次重複中使用方面[k]。

以下是在角js代碼:

<!doctype html> 
 
<html ng-app> 
 

 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
 
</head> 
 

 
<body> 
 

 
    <div ng-init="facets = 
 
    {'tm_mailbox': {buckets: [{key:'budlion', doc_count:1037}]}, 
 
    'tm_user': {buckets: [{key:'karl', doc_count:10}, {key:'kael2', doc_count:111}] }, 
 
    'tm_message': {buckets: [{key:'sylvia', doc_count:298}] }}; 
 
    facets_ordered_keys = ['tm_user', 'tm_message', 'tm_mailbox'] 
 
"> 
 
    <div ng-repeat=" k in facets_ordered_keys "> 
 
     <p>k is: {{k}}</p> 
 
     <p>In facets values is:{{facets[k]}}</p> 
 
    </div> 
 
    <hr> 
 
    
 
    <!-- why i cannot read facets[k]? --> 
 
    <div ng-repeat=" k in facets_ordered_keys "> 
 
     <dt>{{k}}</dt> 
 
     <dl ng-repeat="v in facets[k]"> 
 
     <dd ng-repeat="bucket in v.buckets"> 
 
      <label>{{bucket.key}}</label> 
 
      <span>{{bucket.doc_count}}</span> 
 
     </dd> 
 
     </dl> 
 
    </div> 
 
    
 
    </div> 
 

 
</body> 
 

 
</html>

回答

0

嘗試此。

<!doctype html> 
 
<html ng-app> 
 

 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
 
</head> 
 

 
<body> 
 

 
    <div ng-init="facets = 
 
    {'tm_mailbox': {buckets: [{key:'budlion', doc_count:1037}]}, 
 
    'tm_user': {buckets: [{key:'karl', doc_count:10}, {key:'kael2', doc_count:111}] }, 
 
    'tm_message': {buckets: [{key:'sylvia', doc_count:298}] }}; 
 
    facets_ordered_keys = ['tm_user', 'tm_message', 'tm_mailbox'] 
 
"> 
 
    <div ng-repeat=" k in facets_ordered_keys "> 
 
     <p>k is: {{k}}</p> 
 
     <p>In facets values is:{{facets[k]}}</p> 
 
    </div> 
 
    <hr> 
 
    
 
    <!-- why i cannot read facets[k]? --> 
 
    <div ng-repeat=" k in facets_ordered_keys "> 
 
     <dt>{{k}}</dt> 
 
     <dl ng-repeat="v in facets[k]"> 
 
     <dd ng-repeat="bucket in v"> \t \t 
 
      <label>{{bucket.key}}</label> 
 
      <span>{{bucket.doc_count}}</span> 
 
     </dd> 
 
     </dl> 
 
    </div> 
 
    
 
    </div> 
 

 
</body> 
 

 
</html>

+0

我想他並不需要在'面[K]'額外'NG-repeat',因爲他只在乎對象的'buckets'財產。所以應該有''dd ng-repeat =「桶中的一個嵌套循環[face] [k] .buckets」>' – 2015-02-06 11:00:00

+0

是的。除非他想要「

」標籤環繞「
」標籤。 – Deshan 2015-02-07 05:51:24

+0

@DavidWilliams非常感謝。你瞭解我 ;) – zjalex 2015-02-07 06:45:29