Chcę użyć funkcji Angular-ui do dodania . Chciałbym przekazać wybrane obiekty do modelu NG-i to odwzorowane na moich opcji, zawierająca obiekty o tej samej strukturze, ale nie z tego samego źródła:Mapowanie obiektów w trybie kątowymJS ui.select przy użyciu opcji "ścieżka" "
<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>
Lista z ng-repeat
trainings
ze związkiem przykładem trening wygląda następująco:
[{"description": "",
"skills": [{"type": "tech",
"name": "C",
"id": 194}],
"id": 1,
"name": "Test"}]
Moja lista skills
z ui-select-choices
zawiera tę samą strukturę danych jak w training.skills
:
[{"type": "tech",
"name": "C#",
"id": 194},
{"type": "tech",
"name": "Java",
"id": 197},
...]
Niestety to nie działa. Ui-select opróżnia mój training.skills
, pokazując mi puste pole wyboru. Rozumiem, że angularjs nie jest w stanie odwzorować tych obiektów, jeśli nie pochodzą z tej samej tablicy, jak podano w this blogpost. To sugeruje użycie track by
powiedzieć ui.select
która to właściwość używać do mapowania dwie listy obiektów, ale jeśli mogę zmienić linię ui-select-choices
do:
<ui-select-choices group-by="skillTypeGrp" repeat="skill.id as skill in skills track by skill.id | filter: $select.search">
nic się nie zmienia. Czy istnieje możliwość uruchomienia tej operacji bez zastępowania moich obiektów ich identyfikatorami, tak jak sugeruje to single property binding example?