Właśnie zacząłem grać z Angular.js i mam pytanie dotyczące ngOptions: Czy można oznaczyć grupę optyczną?Angular.js Wybierz z ngOptions: Oznacz grupę optyczną
Pozwala założyć 2 obiekty - samochody i garaże.
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"},
...
]
Z tym kodem mam prawie wynik chcę:
ng-options = "car.id as car.name + ' (' + car.color + ')' group by car.garageId for car in cars"
skutkować wybierz:
-----------------
1
Diablo (red)
Countach (white)
Firebird (red)
2
Clio (silver)
Golf (black)
3
Hummer (silver)
-----------------
Ale chcę oznakować optgroups jak "Garaż 1" "Garaż 2" ... lub jeszcze lepiej wyświetla nazwę garażu, a nie tylko garaż.
angularjs.org documentation for select mówi nic na temat etykiet do optgroup, ale chciałbym rozszerzyć grupę przez część ngOptions jak group by car.garageId as 'Garage ' + car.garageId
lub group by car.garageId as getGarageName(car.garageId)
- który niestety nie działa.
Jedynym moim dotychczasowym rozwiązaniem jest dodanie nowej właściwości "garageDisplayName" do obiektów samochodu i zapisanie jej nazwy id + garage i użycie jej jako grupy według parametru. Ale nie chcę aktualizować wszystkich samochodów za każdym razem, gdy zmieni się nazwa garażu.
Czy istnieje sposób na oznaczenie optgroups za pomocą ngOptions, czy powinienem użyć w tym przypadku ngRepeat?
Dzięki wielkie! Zawsze próbowałem go z częścią 'as' zamiast zamiast pisać wyrażenie, które chcę wyświetlić. :) Można więc także zrobić "group by" Garage "+ car.garageId'. –
I jak zasugerowałeś, rozważałem zapisanie odniesienia garażu zamiast identyfikatora i skończyłem z tym: 'group by car.garage.name + '-' + car.garage.id' _ (nazwa garażu nie jest unikatowa) _ co w rzeczywistości jest prostsze. –