So legen Sie einen Standardwert für ng-options fest (Mehrfachauswahl)

8

Ich wollte einen Standardwert für meine ng-Optionen setzen, indem ich ng-init , ng-model , etc. benutze. Sie haben überhaupt nicht funktioniert. Mein Code folgt:

Schräg

%Vor%

HTML

%Vor%

Hier ist mein Plunkr. Jede Hilfe wäre willkommen.

    
lvarayut 08.12.2014, 04:06
quelle

4 Antworten

13
  

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:

%Vor%

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.

    
Meligy 08.12.2014, 05:01
quelle
1

Wenn dein Modell wie $scope.user.roles = [1]; ist, dann sollte dein ng-options wie folgt aussehen,

%Vor%

Dies wird nur die ID

auswählen

Wenn Sie data-ng-options="role.name for role in roles" mögen, dann sollte Ihr Modell wie

aussehen %Vor%

, 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.

    
K.Toress 08.12.2014 04:40
quelle
0

gefällt das

%Vor%     
Kuldeep Dangi 08.12.2014 04:17
quelle
0

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.

    
Lihini 08.12.2014 04:38
quelle

Tags und Links