2016-08-31 3 views
2

Ich versuche, die Werte in der Auswahl mit anging ng Optionen zu füllen. In meinem Array-Objekt sollte ich den Wert in der Auswahl nicht hinzufügen, wenn er nicht das Attribut 'ID' hat im Array.So füllen Sie die Auswahloptionen mit Winkel

Erwartung:

Sollte nur die Werte füllen, die 'id' Attribut in Array-Objekt hat.

Aktuelles Verhalten:

Derzeit ist es nicht richtig Filterung und das Objekt, das nicht id-Attribut hat kommt als leer in den Optionen auszuwählen. Bild hinzugefügt, wie es momentan aussieht, es überspringt nicht das Array-Attribut, das kein Attribut 'id' enthält.

Image:

enter image description here

JSON:

[ 
    { 
    "name": "abc" 
    }, 
    { 
    "id": 123, 
    "name": "def" 
    }, 
    { 
    "id": 456, 
    "name": "ghi" 
    } 

] 

HTML:

<select id="selectBox" ng-model="vm.selectedVal" ng-change="vm.selectChange()" 
ng-options="myobj.id as (myobj.name ? (myobj.name + ' - ' + (myobj.id | formatId)) : (myobj.id | formatId)) for myobj in (vm.myobj | filter:{id:'!!'}) track by myobj.id"> 
</select> 

Antwort

1

Ihr Code gut funktioniert, leer ist nicht das Array-Element, aber der Modellwert ist nicht gesetzt, so dass es ein Element hinzufügen, geben Sie einen Standardwert wie "- wählen Sie ein Element -"

Versuchen Sie folgendes:

<select id="selectBox" 
     ng-model="vm.selectedVal" 
     ng-options="item.id as item.name for item in list | filter:emptyOrNull"> 
     <option value="">Select One</option> 
</select> 

On-Controller:

$scope.emptyOrNull = function(item){ 
    return !(item.id == null || item.id == undefined) 
} 
Verwandte Themen