2013-09-26 11 views
5

Wie kann ich meine ng-repeat-Liste aus dem verschachtelten Wert des Schnipsel-Attribut skärm sortieren: Mein Controller sieht wie folgt aus:sortieren eine Winkel ng-Wiederholungsliste basiert auf verschachtelten Wert

'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" 
     } 
    ] 


}; 

Die alphabetischen und datumsbasierte Sortierungen funktionieren, aber wie verwende ich den verschachtelten Wert von Skärm als Sortierparameter?

 <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

Sie scheinen zu überschreiben, um den Parameter '' '' '' 'zu überschreiben und verwenden Sie die Liste zu loopen und Eigenschaften zu erhalten. – vittore

Antwort

2

Wenn Sie mit dem Skärm Eigenschaft sortieren wollen, müssen Sie das Sortieren Ausdruck wie folgt definieren:

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

Plunker

Sieht aus wie Winkel einige Probleme mit nicht-ASCII-Zeichen haben in Ausdrücken verwendet.

+0

Wie kann ich dieses eine Sortierattribut rückgängig machen? Particularilly –

+1

Fügen Sie vor dem Sortierausdruck '+' oder '-' hinzu. Link zur Dokumentation: http://code.angularjs.org/1.0.8/docs/api/ng.filter:orderBy – jusio

Verwandte Themen