Ich möchte angle-ui ui.select
verwenden, um eine multiple dropdown field
zu füllen. Ich mag die ausgewählten Objekte in das ng-Modell zu übergeben und habe es auf meine Optionen abgebildet, Objekte der gleichen Struktur enthalten, aber nicht aus der gleichen Quelle:Mapping Objekte in angularJS ui.select mit "track by"
<div ng-repeat="training in trainings">
<form class="form-horizontal" role="form">
<ui-select multiple ng-model="training.skills" theme="select2" ng-disabled="disabled">
<ui-select-match placeholder="Wähle Skills...">{{$item.name}}</ui-select-match>
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills | filter: $select.search">
<span>{{skill.name}}</span>
</ui-select-choices>
</ui-select>
</form>
</div>
Die trainings
Liste von ng-repeat
mit einem Beispiel Ausbildung sieht wie folgt aus:
[{"description": "",
"skills": [{"type": "tech",
"name": "C",
"id": 194}],
"id": 1,
"name": "Test"}]
Meine skills
Liste von ui-select-choices
enthält die gleiche Datenstruktur wie in training.skills
:
[{"type": "tech",
"name": "C#",
"id": 194},
{"type": "tech",
"name": "Java",
"id": 197},
...]
Leider funktioniert das nicht. Das ui-select leert meine training.skills
und zeigt mir ein leeres Auswahlfeld. Ich verstehe, dass angularjs diese Objekte nicht abbilden kann, wenn sie nicht das gleiche Array wie in this blogpost angegeben haben. Er schlägt vor, track by
mit ui.select
die Eigenschaft zu sagen, verwenden, um die zwei Listen von Objekten auf der Karte, aber wenn ich die ui-select-choices
Linie zu ändern:
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills track by skill.id | filter: $select.search">
ändert sich nichts. Gibt es irgendeine Möglichkeit, dies zu erreichen, ohne meine Objekte durch ihre IDs zu ersetzen, wie die suggeriert?