2014-04-12 5 views
8

लेबल करें मैंने अभी Angular.js के साथ खेलना शुरू किया है और ngOptions के बारे में कोई प्रश्न है: क्या यह विकल्प समूह को लेबल करना संभव है?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" optgroups लेबल करना चाहते, "गेराज 2", ... या गेराज का नाम भी बेहतर प्रदर्शन करता है न केवल गैराज आईडी।

angularjs.org documentation for select optgroup के लिए लेबल के बारे में कुछ भी नहीं कहना है, लेकिन मैं की तरह group by car.garageId as 'Garage ' + car.garageId या group by car.garageId as getGarageName(car.garageId) ngOptions का हिस्सा द्वारा समूह विस्तार करना चाहते हैं - जो दुर्भाग्य से काम नहीं कर रहा

मेरा एकमात्र समाधान अब तक कार वस्तुओं के लिए एक नई संपत्ति "गेराज डिस्प्लेनाम" जोड़ना है और वहां आईडी + गेराज नाम स्टोर करना है और पैरामीटर द्वारा समूह के रूप में उपयोग करना है। लेकिन जब भी गेराज नाम बदल जाता है तो मैं सभी कारों को अपडेट नहीं करना चाहता हूं।

क्या ngOptions के साथ optgroups को लेबल करने का कोई तरीका है, या क्या मुझे उस मामले में ngRepeat का उपयोग करना चाहिए? प्रत्येक कार में गेराज आईडी भंडारण की

उत्तर

19

तुम बस एक as का उपयोग किए बिना group by में getGarageName() कॉल कर सकते हैं ...

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

इसके बजाय, आप में गेराज ऑब्जेक्ट के संदर्भ संग्रहीत करने पर विचार करना चाह सकते हैं गैरेज सरणी इस तरह आप गेराज नाम बदल सकते हैं और प्रत्येक कार को बदलने की जरूरत नहीं है। और group by बस हो जाता है ...

group by car.garage.name

+0

धन्यवाद एक बहुत! मैं हमेशा उस अभिव्यक्ति को लिखने के बजाय 'as' भाग' के साथ कोशिश करता हूं जिसे मैं प्रदर्शित करना चाहता हूं। :) तो 'गैरेज' + car.garageId' द्वारा समूह करना भी संभव है। –

+0

और जैसा कि आपने सुझाव दिया था कि मैंने गैरेज के संदर्भ को आईडी के बजाय स्टोर करने के लिए माना और इस के साथ समाप्त किया: 'car.garage.name +' - 'car.garage.id' _' (गैराज नाम अद्वितीय नहीं है) _ जो वास्तव में आसान है। –

संबंधित मुद्दे