Angular.js Выберите с помощью ngOptions:Обозначьте optgroup

StackOverflow https://stackoverflow.com//questions/23036155

  •  21-12-2019
  •  | 
  •  

Вопрос

Я только начал играть с Angular.js и у меня возник вопрос о ngOptions:Можно ли пометить optgroup?

Предположим, что есть 2 объекта - автомобили и гаражи.

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

С помощью этого кода я получил почти тот результат, который я хочу:

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

Результат в выбранном:

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

Но я хочу обозначить группы опций как "Гараж 1", "Гараж 2", ...или еще лучше отобразить название гаража, а не только garageId.

Тот Самый angularjs.org документация для выбора ничего не говорится о метках для optgroup, но я хотел бы расширить группу за счет части ngOptions, таких как group by car.garageId as 'Garage ' + car.garageId или group by car.garageId as getGarageName(car.garageId) - который, к сожалению, не работает.

Мое единственное решение на данный момент - добавить новое свойство "garageDisplayName" к объектам car и сохранить там id + название гаража и использовать это как параметр group by.Но я не хочу обновлять все автомобили всякий раз, когда меняется название гаража.

Есть ли способ пометить optgroups с помощью ngOptions, или я должен использовать ngRepeat в этом случае?

Это было полезно?

Решение

Ты можешь просто позвонить getGarageName() в group by без использования as...

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

Вместо того чтобы хранить идентификатор гаража в каждом автомобиле, вы можете рассмотреть возможность сохранения ссылки на объект garage в массиве garages.Таким образом, вы можете изменить название гаража, и нет необходимости менять каждую машину.И тот group by просто становится...

group by car.garage.name

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top