2015-08-16 4 views
6

Jungs nach habe ich die Winkel Richtlinie ng-Optionen ich dieses Ergebnis bekamWarum enthält der angular ng-options-Wert den Wert data type?

<select name="users" id="users" ng-options="user.id as user.name for user in users" ng-model="user"> 
    <option value="number:1" label="Developers">Ahmed</option> 
    <option value="number:2" label="Designers">Jon</option> 
    <option value="number:3" label="HR">Astm</option> 
    <option value="number:4" label="Doctor">Fady</option> 
</select> 


<select name="colors" id="colors" ng-options="color.code as color.name for color in colors" ng-model="color"> 
    <option value="string:ff0000" label="Developers">Red</option> 
    <option value="string:ffffff" label="Designers">White</option> 
    <option value="string:000000" label="HR">Black</option> 
</select> 

, warum die Option Wert den Datentyp wie Nummer enthält: 1 oder string: ffffff ??

Wie kann ich den Datentyp daraus entfernen und nur den Wert behalten?

+0

könnten Sie eine plunkr der gleichen schaffen? –

+1

Warum kümmert es dich? Du solltest dich sowieso nicht mit dem DOM anlegen. Was zählt ist, was Ihr Modell (dh $ scope.user und $ scope.color) enthält –

+0

Ich lese es aus JSON-Array wie [ { "ID": 1, "name": "Ahmed" }, { "id": 2, "name": "Jon" } ] – Astm

Antwort

0

Momentan gibt es keine Option in angular, um diesen Typ zu entfernen. Wenn Sie das brauchen, verwenden Sie eine benutzerdefinierte Direktive mit ng-option als Eltern.

+0

können Sie schicken mir bitte Beispiel :) – Astm

+0

Darf ich wissen, warum u diese Option benötigen, ist es muss oder nicht ?? – Gopi

+0

siehe die Antwort hier: http://stackoverflow.com/a/31575391/404699 – steampowered

5

Fügen Sie track by [id] am Ende ng-options hinzu.

In Ihrem Fall wäre es:

ng-options="user.id as user.name for user in users track by user.id" 

und

ng-options="color.code as color.name for color in colors track by color.code" 
+0

Vielen Dank, rettete mich einen Tag –