Aktualisierung Ich habe Daten wie folgt aus:ng-Optionen Hinzufügen "string" in Wert und nicht ng-Modell
"RequirementLevels": {
"285960000":"Black",
"285960001":"Green",
"285960002":"Blue",
"285960003":"Purple"
}
Und ich habe eine Auswahl wie folgt aus:
<select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels"
ng-model="Variables.EditingNode.RequirementLevel"
ng-model-options="{ debounce: 300 }"></select>
<span>"{{Variables.EditingNode.RequirementLevel}}"</span>
Dies erzeugt die folgenden html:
Beachten Sie die string:
vor jedem Wert in den Auswahloptionen. Mit dem folgenden Code bekomme ich nicht string:
in den Wert.
<select ng-model="Variables.EditingNode.RequirementLevel">
<option ng-repeat="(key, value) in Variables.Template.RequirementLevels" value="{{key}}">{{value}}</option>
</select>
Meine Frage ist, warum bekomme ich die string:
im ng-Optionsliste und wie kann ich es weg.
Update wegen der Kommentare: Der Grund, warum ich das ändern möchte, ist, weil der ng-Modellwert nicht funktioniert, wenn der Wert string:
darin hat. Ich nehme an, dies ist, weil es "string: 123" nicht in der Option übereinstimmt, die mit "123" vom Modell eingestellt wird.
Update 2
Dies ist der HTML-Code, die Auswahl erstellt.
<div class="form-group input-group">
<label for="ReviewDone">Requirement level</label>
<select ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"
ng-model="Variables.EditingNode.RequirementLevel"
ng-model-options="{ debounce: 300 }"></select>
<span>"{{Variables.EditingNode.RequirementLevel}}"</span>
</div>
Dies erstellt die Auswahl mit den Optionen, wählt aber keinen Standardwert. Der Bereich darunter, der den Inhalt der ng-Modellvariable anzeigt, funktioniert jedoch einwandfrei und gibt die Zahl "285960002" aus, die in der Liste der Optionen enthalten ist. Daher sollte sie aus der Liste ausgewählt werden, um damit zu beginnen.
Der obige Code erzeugt HTML:
<div class="form-group input-group">
<label for="ReviewDone">Requirement level</label>
<select class="ng-pristine ng-untouched ng-valid" ng-model="Variables.EditingNode.RequirementLevel" ng-model-options="{ debounce: 300 }" ng-options="key as value for (key , value) in Variables.Template.RequirementLevels track by key"><option selected="selected" value="?"></option><option value="285960000" label="Black">Black</option><option value="285960001" label="Green">Green</option><option value="285960002" label="Blue">Blue</option><option value="285960003" label="Purple">Purple</option></select>
<span class="ng-binding">"285960002"</span>
</div>
auch einen anderen Wert in der Auswahl ändert den Wert in der Spanne der Auswahl, so dass er den Wert aktualisiert, aber nicht zu lesen, wenn es lädt.
http://stackoverflow.com/questions/37706606/angular-ng-options-broken-1-4 – Claies
Die Werte, die Sie sehen, sind der Hash-Schlüssel für das Element. Dies ist normales Verhalten für angulare 'ng-Optionen', und Ihre Anwendungslogik sollte nicht betroffen sein, da sie den an 'ng-model' zurückgegebenen Wert nicht ändert. – Claies
@Claies: Siehe Update zu Frage: Ich glaube, der ng-Modell Wert funktioniert nicht richtig mit dem String Teil vorhanden. – JensB