Aktualisierung:
Wenn Sie direkt zu der in dieser Antwort verwendeten Referenz gelangen möchten, hier:
Referenz: Anfängliche Auswahl in AngularJS ng-Optionen mit Track von
Folgendes hat für mich funktioniert:
%Vor% Es gab einen Fehler in dem Plunk, dass user
nicht initialisiert wurde. Abgesehen davon würde Angular jedes Objekt im Array ng-options
mit jedem Element im Array ng-model
vergleichen. JavaScript-Vergleich nicht Winkelvergleich, der Vergleich von 2 Objekten sogar mit den gleichen Eigenschaften in JavaScript ergibt false (verschiedene Objekte).
Plunk: Ссылка
.
Das ist jetzt nicht ideal. In der Regel möchten Sie diese anhand der ID korrelieren, hier ist ein anderer Weg:
Verwenden Sie in HTML track by
, um AngularJS mitzuteilen, dass anstelle von ganzen Objekten IDs verglichen werden sollen:
Dann können Sie in Ihrem Controller jedes Objekt verwenden, ohne sich tatsächlich im Array zu befinden:
%Vor%Plunk: Ссылка
Beachten Sie, dass ich die Eigenschaft name
nicht einmal benötigt habe. Es ist nur für das Erstellen eines richtigen Objekts später, aber es ist wirklich nicht für die Anpassung jetzt erforderlich, versuchen Sie es ohne!
.
Ich habe ein detailliertes Tutorial mit einem begleitenden Video zu diesem anfänglichen Auswahlproblem und seinen Variationen geschrieben. Es konzentriert sich auf Single-Select, aber Multi-Select verwendet nur ein Array von Objekten anstelle von einem Objekt direkt.
Überprüfen Sie es für mehr Verständnis - sehr empfehlenswert:
Anfängliche Auswahl in AngularJS ng-Optionen mit Track von
.
Lassen Sie mich in den Kommentaren wissen, wenn Sie immer noch damit kämpfen.
Wenn dein Modell wie $scope.user.roles = [1];
ist, dann sollte dein ng-options
wie folgt aussehen,
Dies wird nur die ID
Wenn Sie data-ng-options="role.name for role in roles"
mögen, dann sollte Ihr Modell wie
, weil dadurch das gesamte Objekt ausgewählt wird
und in Ihrem Controller
%Vor%, weil Sie versuchen, auf eine Eigenschaft roles
von user
zuzugreifen, aber es ist kein user
-Objekt definiert, dies führt ebenfalls zu einem Fehler
Hier ist der Aktualisierte Plunker
Hier ist das aktualisierte plunker1 plocker2 für Ihren Fall von ng-options
Sie können ng-init
hier verwenden. bitte überprüfen.
Ihre Plunkr hat Fehler. Sie müssen $scope.user = {};
definieren, bevor Sie es verwenden. Dann wird es funktionieren.
Hinweis: Dadurch wird nur ein Anfangswert für das Modell festgelegt. Wenn Sie den Administrator standardmäßig als hervorgehoben markieren möchten, müssen Sie anders vorgehen.
Tags und Links angularjs