Angularjs Angular.js使用ngOptions选择:标记optgroup
我刚开始使用Angular.js,对ngOptions有一个问题:是否可以标记optgroup 让我们假设两个对象-汽车和车库Angularjs Angular.js使用ngOptions选择:标记optgroup,angularjs,angularjs-ng-options,Angularjs,Angularjs Ng Options,我刚开始使用Angular.js,对ngOptions有一个问题:是否可以标记optgroup 让我们假设两个对象-汽车和车库 cars=[ {“id”:1,“name”:“暗黑破坏神”,“color”:“red”,“garageId”:1}, {“id”:2,“name”:“Countach”,“color”:“white”,“garageId”:1}, {“id”:3,“name”:“Clio”,“color”:“silver”,“garageId”:2}, ... ] 车库=[ {“id”
cars=[
{“id”:1,“name”:“暗黑破坏神”,“color”:“red”,“garageId”:1},
{“id”:2,“name”:“Countach”,“color”:“white”,“garageId”:1},
{“id”:3,“name”:“Clio”,“color”:“silver”,“garageId”:2},
...
]
车库=[
{“id”:1,“name”:“超级豪华车库”},
{“id”:2,“name”:“Toms Eastside”},
...
]
通过这段代码,我几乎得到了我想要的结果:
ng options=“car.id作为car.name+”(“+car.color+”)“按car.garageId分组,用于车内车”
结果在选择:
-----------------
1
Diablo (red)
Countach (white)
Firebird (red)
2
Clio (silver)
Golf (black)
3
Hummer (silver)
-----------------
但我想给optgroups贴上标签,比如“Garage 1”、“Garage 2”。。。或者更好地显示车库的名称,而不仅仅是车库ID
上面没有提到optgroup的标签,但是我想通过Ngoption的一部分来扩展这个组,比如groupbycar.garageId为'Garage'+car.garageId
或者groupbycar.garageId为getGarageName(car.garageId)
,可惜这个选项不起作用
到目前为止,我唯一的解决方案是将一个新属性“garageDisplayName”添加到car对象中,并将id+车库名称存储在其中,并将其作为GROUPBY参数使用。但我不想在车库名称更改时更新所有汽车
有没有办法用ngOptions标记optgroups,或者我应该在这种情况下使用ngRepeat?您可以只调用
group by
中的getGarageName()
,而不使用as
ng-options="car.id as car.name + ' (' + car.color + ')' group by getGarageName(car.garageId) for car in cars"
< >不要将车库ID存储在每辆车中,您可能需要考虑在车库数组中存储对车库对象的引用。这样你就可以更改车库的名称,而无需更改每辆车。而分组方式就变成了
按车分组。车库。姓名
非常感谢!我总是用作为部分来尝试,而不是只写我想显示的表达式。:)因此,也可以按“Garage”+car.garageId对进行分组。正如您所建议的,我考虑存储车库的引用,而不是id,并以以下内容结束:按car.Garage.name+'-'+car.Garage.id进行分组(车库名称不唯一),这确实更简单。