6

Die Reaktion JSON von einer HTTP-GET-Methode wird, wie unten gezeigtBind enum-Werte in ng-Optionen Winkel js

[ 
    { 
     "1": "Open" 
    }, 
    { 
     "2": "Expired" 
    } 
] 

Wie in Winkeln js diese Daten in einem ausgewählten Auswahlfeld zu binden. Ich habe versucht, mit dieser Option:

<select class="form-control" ng-model="selected" ng-options="item for item in data"> 
<option value="">----Select----</option> 
</select> 

Aber ich bin immer [object, object] in der Dropdown-Liste.

Antwort

5

ersetzen Sie könnten die JSON-Daten in die durch ng-Optionen einfach Array.reduce, entlang der Linien von

$scope.options = data.reduce(function(memo, obj) { 
    return angular.extend(memo, obj); 
}, {}); 

<select ng-model="selected" ng-options="key as val for (key, val) in options"></select> 

mit erwarteten Format umwandeln Vollständiges Beispiel hier http://plnkr.co/edit/PV4BYrz0KBkIFPWVzVaT?p=preview

+0

Danke @ mcfedr.It wirklich geholfen :) – forgottofly

3

Sie benötigen einen key,value in ng-Repeat-Syntax, wie Sie unbekannte oder verschiedene Schlüssel haben

Und Sie haben den Überblick über zwei Wiederholungen für Array und dann

im Inneren der Objekte für Schlüssel zuerst halten
<select class="form-control" ng-model="selected" > 
<option value="">----Select----</option> 
    <optgroup ng-repeat="v in values"> 

    <option ng-repeat='(key,value) in v' value="{{key}}">{{value}}</option> 
    </optgroup> 
</select> 

Demo

Wert in Option wird "open" oder" expired "Sie können es auf Tasten ändern" 0 "oder" 1 ", wenn Sie value={{value}} mit value="{{key}}"

app = angular.module('test',[]); 
 
app.controller('testctrl',function($scope){ 
 
$scope.values =[{"1": "Open" },{"2": "Expired" }]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-controller="testctrl" ng-app="test"> 
 
<span ng-if="selectedModel">{{selectedModel}}</span> 
 
<select class="form-control" ng-model="selectedModel"> 
 
<option>----Select----</option> 
 
    <optgroup ng-repeat="v in values"> 
 
     
 
    <option ng-repeat='(key,value) in v' value="{{value}}">{{value}}</option> 
 
    </optgroup> 
 
</select> 
 
    </div>

+0

@ABwird der Wert, den ich Wählen wird mit dem Modell verknüpft? – forgottofly

+0

lass mich bearbeiten, ja das wird. Können Sie Ihre Frage des Kommentars beantworten –

+0

Wenn ich den ausgewählten Namen im Modell haben will, dh "Abgelaufen", wenn ich die zweite Option wähle. Kann ich das Modell im Controller mit te-Wert verwenden? – forgottofly