angular-ui / ui-select: Wie initialisiert man das ausgewählte Objekt richtig?

8

Dies ist meine Auswahl in der Ansicht:

%Vor%

Und das ist der relevante Code in meinem Controller:

%Vor%

Die vom Server geholten Label sind theoretisch wie diese:

%Vor%

Und das übergebene "from-outside" Label, "passedLabel", ist theoretisch wie EINES von denen in $scope.labels auch, zB:

%Vor%


... ich sage theoretisch theoretisch , weil ich empirisch sehe, dass sie anders sind, weil eckel ihnen etwas hinzufügt (zB $$hashKey , oder __proto__ ).

Aufgrund der Differenz entspricht also $scope.selectedLabel.selected = $scope.passedLabel nicht dem entsprechenden Element in der ui-select (sie sind nicht das gleiche Objekt), und das Ergebnis davon ist Dieses Verhalten:

Wie kann ich die anfängliche Auswahl richtig einstellen ? Gibt es eine Möglichkeit, ID anstelle von Objektvergleich zu verwenden? Ich möchte vermeiden, ein for wie folgt zu haben:

%Vor%

Ich bin mir ziemlich sicher, dass es wie erwartet funktionieren würde, aber ich würde das for nennen müssen, nachdem der Ajax zurückgegeben wurde ... und ich habe auch andere ui-selects

    
sports 24.11.2014, 03:57
quelle

1 Antwort

5

Wenn Sie den von Ihnen erwähnten Zustand erreichen möchten, übergeben Sie einfach die korrekte Referenz an Ihr Modell.

Nach dem Erfolg des Fetchlabel-Aufrufs legen Sie die Werte in Labels fest. Nun müssen Sie beim Erfolg dieser Funktion die Funktion aufrufen, die presentLabel abruft.

Sobald Sie die Daten des aktuellen Labels erhalten haben, können Sie den Index dieses Objekts im Etikettenbereich abrufen.

%Vor%

Dies wird Ihren Zweck lösen.

    
Aditya Sethi 24.11.2014, 04:47
quelle

Tags und Links