Domanda

Ho appena iniziato a giocare con Angular.js e avere una domanda su NGOPTIONS: è possibile etichettare l'optgroup?

consente di assumere 2 oggetti - auto e garage.

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"},
    ...
]
.

Con questo codice ho quasi il risultato che voglio:

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

Risultato nella selezione:

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

Ma voglio etichettare gli optgroup come "Garage 1", "Garage 2", ... o ancora meglio mostrare il nome del garage e non solo il garageid.

the Documentazione angolarjs.org per selezionare non dice nulla sulle etichette per l'optgroup , ma vorrei estendere il gruppo per parte di ngoptions come group by car.garageId as 'Garage ' + car.garageId o group by car.garageId as getGarageName(car.garageId) - che tristemente non funziona .

La mia unica soluzione finora è quella di aggiungere una nuova proprietà "GaragedisplayName" agli oggetti auto e memorizzare lì il nome ID + Garage e utilizzarlo come gruppo per parametro. Ma non voglio aggiornare tutte le auto ogni volta che viene modificato un nome di garage.

C'è un modo per etichettare gli optgroup con le ngoptions o dovrei usare ngrepeat in quel caso?

È stato utile?

Soluzione

Puoi semplicemente chiamare getGarageName() nel group by senza utilizzare as ...

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

Invece di memorizzare l'ID del garage in ogni auto, potresti prendere in considerazione la possibilità di prendere in considerazione la memorizzazione di un riferimento all'oggetto garage nell'array Garage.In questo modo puoi cambiare il nome del garage e non c'è bisogno di cambiare ogni auto.E il group by diventa semplicemente ...

group by car.garage.name

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top