Objekte in angularJS zuordnen u.selektieren mit "track by"

9

Ich möchte angular-ui's ui.select verwenden, um multiple dropdown field zu füllen. Ich möchte die ausgewählten Objekte an das ng-Modell übergeben und sie meinen Optionen zuordnen, die Objekte der gleichen Struktur enthalten, aber nicht aus derselben Quelle:

%Vor%

Die trainings Liste von ng-repeat mit einem Beispieltraining sieht folgendermaßen aus:

%Vor%

Meine skills Liste von ui-select-choices enthält dieselbe Datenstruktur wie in training.skills :

%Vor%

Leider funktioniert das nicht. Der ui-select leert mein training.skills und zeigt mir ein leeres Auswahlfeld an. Ich verstehe, dass angularjs nicht in der Lage ist, diese Objekte zuzuordnen, wenn sie nicht das gleiche Array, wie in this blogpost . Es empfiehlt sich, track by zu verwenden, um ui.select anzugeben, welche Eigenschaft verwendet werden soll, um die beiden Listen von Objekten zuzuordnen, aber wenn ich die ui-select-choices -Zeile zu:

ändere %Vor%

nichts ändert sich. Gibt es irgendeine Möglichkeit, dies zu erreichen, ohne meine Objekte durch ihre IDs zu ersetzen, wie das Beispiel für eine einzelne Bindungseigenschaft vorschlägt?

    
vnoec 25.11.2014, 10:05
quelle

3 Antworten

2

Sie müssen filter und track by umkehren, damit es funktioniert:

%Vor%

Es sieht komisch aus, hat aber den Trick für mich gemacht.

    
madc 08.07.2015 08:58
quelle
0

Wenn ich nicht falsch liege, versuchst du, das ganze Objekt mit seiner ID zu vergleichen.

Haben Sie versucht zu verwenden:

%Vor%

Beachten Sie, dass ich "skill.id" aus der Wiederholung entfernt habe. Ich denke auf diese Weise sollten Sie die Objekte vergleichen und hoffentlich wird es funktionieren.

Sonst würde ich die ui-select-Auswahl so lassen, wie Sie sie haben und in der ui-select ein Array von IDs (die ausgewählten Trainings) übergeben, die der Liste entsprechen. Natürlich würde dies mehr Code von Ihrer Seite erfordern, um das Skills-Array bei jeder Änderung zu aktualisieren.

Ich hoffe, es hilft.

    
Tamy 29.04.2015 14:13
quelle
0

Wenn Sie auf die Dokumentation verweisen, die Sie unter Ссылка finden Der track by muss immer der letzte Ausdruck sein.

Also, wie von madc vorgeschlagen, wenn Sie zu:

wechseln %Vor%

Es würde funktionieren.

Unten ist das Dokumentations-Snippet, das über Track als letzten Ausdruck sagt:

    
Himanshu Arora 05.09.2015 17:57
quelle

Tags und Links