Frage

Ich habe gerade angefangen mit Angular zu spielen.js und habe eine Frage zu ngOptions:Ist es möglich, die optgroup zu kennzeichnen?

Nehmen wir 2 Objekte an - Autos und Garagen.

cars = [
    {"id": 1, "name": "Diablo", "color": "red", "garageId": 1},
    {"id": 2, "name": "Countach", "color": "white", "garageId": 1},
    {"id": 3, "name": "Clio", "color": "silver", "garageId": 2},
    ...
]
garages = [
    {"id": 1, "name": "Super Garage Deluxe"},
    {"id": 2, "name": "Toms Eastside"},
    ...
]

Mit diesem Code habe ich fast das gewünschte Ergebnis erzielt:

ng-options = "car.id as car.name + ' (' + car.color + ')' group by car.garageId for car in cars"

Ergebnis in der Auswahl:

-----------------
1
 Diablo (red)
 Countach (white)
 Firebird (red)
2
 Clio (silver)
 Golf (black)
3
 Hummer (silver)
-----------------

Aber ich möchte die Optgroups wie "Garage 1", "Garage 2", ...oder noch besser den Namen der Garage anzeigen und nicht nur die Garagen-ID.

Der angularjs.org dokumentation für select sagt nichts über Labels für die optgroup aus, aber ich möchte die Gruppe um einen Teil von ngOptions erweitern wie group by car.garageId as 'Garage ' + car.garageId oder group by car.garageId as getGarageName(car.garageId) - was leider nicht funktioniert.

Meine bisher einzige Lösung besteht darin, den Autoobjekten eine neue Eigenschaft "garageDisplayName" hinzuzufügen und dort die ID + den Garagennamen zu speichern und diese als Parameter für die Gruppierung zu verwenden.Aber ich möchte nicht alle Autos aktualisieren, wenn ein Garagenname geändert wird.

Gibt es eine Möglichkeit, die optgroups mit ngOptions zu ngOptions , oder sollte ich in diesem Fall ngRepeat verwenden?

War es hilfreich?

Lösung

Sie können einfach anrufen getGarageName() in der group by ohne Verwendung eines as...

ng-options="car.id as car.name + ' (' + car.color + ')' group by getGarageName(car.garageId) for car in cars"

Anstatt die Garagen-ID in jedem Auto zu speichern, sollten Sie einen Verweis auf das Garagenobjekt im Garagenarray speichern.Auf diese Weise können Sie den Garagennamen ändern und müssen nicht jedes Auto ändern.Und die group by einfach wird...

group by car.garage.name

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top