2013-07-12 7 views
5

Dies ist das erste Mal, dass ich mit AngularJS spiele, und eigentlich folge ich dem Einstiegs-Tutorial. Es kam mir in den Sinn, dass ich die Tutorial-Skripte zu meinem Verständnis anpassen würde, indem ich einfach ein wenig hinzufügte, das nicht im Tutorial war.Angular ng-repeat-Filter mit Prädikat-Funktion funktioniert nicht wie erwartet

Grundsätzlich ist das Telefon Objekt im Tutorial verwendet wurde:

{ 
     "age": 1, 
     "id": "motorola-xoom", 
     "imageUrl": "img/phones/motorola-xoom.0.jpg", 
     "name": "MOTOROLA XOOM™", 
     "snippet": "The Next, Next Generation..." 
    } 

Was ich versuchte, war, ein Auto bevölkerten Auswahlbox für um die Liste hinzuzufügen:

<select ng-model="orderProp"> 
     <option ng-repeat="(key, value) in phones[0]" value="{{key}}"> 
      {{labels[key]}} 
     </option> 
    </select> 

und fügte ein Modell Etiketten dem Controller hinzu:

$scope.labels = { 
     "name": "Phone name", 
     "snippet": "Description", 
     "age": "Newest", 
    }; 
Es

war wie erwartet, mit der Ausnahme, dass ich nur die drei Eigenschaften, die oben filtern wollte, also denke ich, es wäre einfach eine benutzerdefinierte sagt Funktion zum Filtern wie folgt hinzuzufügen:

$scope.isPhonePropFilterable = function (propName) { 
     console.log('it DOES NOT get here!!!'); 
     return propName == 'name' || propName != 'snippet' || propName != 'age'; 
    }; 

und hinzugefügt das zu der ng-repeat

 <option ng-repeat="(key, value) in phones[0] | filter:isPhonePropFilterable" value="{{key}}"> 

Zu meiner Überraschung war es nicht so einfach wie ich dachte, meine Filterfunktion wurde nicht aufgerufen.

es hier ansehen: plunker

Habe ich etwas falsch gemacht?


bearbeitet: ng-repeat Filter unterstützt Filterung Array nur, nicht widersprechen. Die Filterfunktion kehrt zurück, wenn Array Parameter kein Array ist ...

+0

Nun, es war meine Schuld. Der Ng-Repeat-Filter unterstützt nur ** Array **, er hat nur Array in den Dokumenten erwähnt. Und überprüft die Filterfunktion, es zurückgegeben, wenn Array-Parameter kein Array ist .... –

+2

Bitte machen Sie diesen Kommentar eine Antwort, so dass andere Leute bemerken, dass dieses Problem gelöst ist. – EvAlex

Antwort

4

Nun, es war meine Schuld. Der Ng-Repeat-Filter unterstützt nur Array, er hat nur Array in den Dokumenten erwähnt. Und überprüft die Filterfunktion, es zurückgegeben, wenn Array-Parameter kein Array ist ....