2013-09-26 119 views
5

Làm thế nào để sắp xếp danh sách ng-repeat tôi từ giá trị lồng nhau của các đoạn thuộc tính skärm: điều khiển của tôi trông như thế này:Sắp xếp một danh sách ng-repeat góc dựa trên giá trị lồng nhau

'use strict'; 

/* Controllers */ 

function PhoneListCtrl($scope){ 
    $scope.phones = [ 

     {"name" : "Samsung Galaxy S4", 
     "snippet" : { "Operativsystem" : "Android 4.2.2", 
          "Skärm" : "4,99 tum", 
          "CPU" : "Quad-core 1,6GHz", 
          "Kamera, bak" : "13 MP", 
          "Kamera, fram" : "1,9 MP", 
          "Övrigt" : "Närfältskommunikation (Eng. near field communication, NFC)" 
          }, 
      "date" : "2012-04-27T00:00:00.000Z" 
     }, 


     {"name" : "iPhone 5", 
      "snippet" : { "Operativsystem" : "iOS 7", 
          "Skärm" : "4 tum", 
          "CPU" : "Apple A6 1,3GHz dual core", 
          "Kamera, bak" : "8 MP", 
          "Kamera, fram" : "1,2 MP", 
          "Övrigt" : "-" 
          }, 
      "date" : "2012-09-21T00:00:00.000Z" 
     }, 

       {"name" : "iPhone 5s", 
      "snippet" : { "Operativsystem" : "iOS 7", 
          "Skärm" : "42 tum", 
          "CPU" : "Apple A7 1,3 GHz dual core", 
          "Kamera, bak" : "8 MP", 
          "Kamera, fram" : "1,2 MP", 
          "Övrigt" : "-" 
          }, 
      "date" : "2013-09-20T00:00:00.000Z" 
     } 
    ] 


}; 

Các chữ cái và phân loại dựa trên ngày tháng hoạt động nhưng làm cách nào để tôi sử dụng giá trị lồng nhau của Skärm làm tham số sắp xếp?

 <b>Sort by: </b> 
     <select ng-model="sortByProp"> 
      <option value="name">Alfabetiskt</option> 
      <option value="date">Nyast</option> 
      <option value="snippet.Skärm">Skärmstorlek</option> 
     </select> 

    </div> 
    <div class="span10"> 
     <h1>The future of mobile devices</h1> 

     <ul class="phonesListing"> 
     <li ng-repeat="phone in phones | filter:query | orderBy:sortByProp"> 
      <h3>{{phone.name}}</h3> 
      <ul> 
       <li ng-repeat="(key,value) in phone.snippet"> 
        <b>{{key}}:</b>  {{value}} 
       </li> 
      </ul> 
     </li> 
     </ul> 
     <p>Total number of phones: {{phones.length}}</p> 
    </div> 
+0

bạn dường như cần ghi đè bộ lọc 'orderBy' để phân tách tham số trên' .' và sử dụng danh sách để lặp và nhận thuộc tính. – vittore

Trả lời

2

Nếu bạn muốn sắp xếp theo Skärm thuộc tính, bạn sẽ phải xác định sắp xếp biểu hiện như thế này:

<option value="snippet['Skärm']">Skärmstorlek</option> 

Plunker

Hình như góc có một số vấn đề với các biểu tượng phi ASCII được sử dụng trong các biểu thức.

+0

làm cách nào để đảo ngược thuộc tính sắp xếp này cụ thể –

+1

Thêm '+' hoặc '-' trước biểu thức sắp xếp. Liên kết tới tài liệu: http://code.angularjs.org/1.0.8/docs/api/ng.filter:orderBy – jusio