2013-06-12 7 views
28

से ऑर्डर करने के लिए कैसे की मैं इस रूप में निम्न डेटा सरणी है मान लेते हैं:AngularJS - ngOptions: समूह का नाम से और उसके बाद लेबल

var data = [{group:GroupA, label: BB}, {group:GroupB, label: DD}.....]. 

मेरे बंधन की तरह कुछ होगा:

<select data-ng-options="c as c.label group by c.group for c in data"></select> 

मैं ड्रॉपडाउन को समूहबी से पहले ग्रुप ए के साथ सभी वस्तुओं को सूचीबद्ध करना चाहता हूं, जबकि उन्हें प्रत्येक समूह के तहत भी क्रमबद्ध किया जाता है।

ऐसा कुछ।

GroupA 
AA 
BB 
CC 

GroupB 
DD 
EE 
FF 

मैं जानता हूँ कि मैं orderBy कोणीय फिल्टर का उपयोग कर सकते हैं, लेकिन वास्तव में जिस तरह से मैं की जरूरत है काम नहीं करता। मेरा अनुमान है कि मुझे एक कस्टम फ़िल्टर लिखना है जो मैन्युअल रूप से जिस तरह से मैं चाहता हूं उसे सूचीबद्ध करता हूं, लेकिन मैं सोच रहा था कि कार्य को पूरा करने का कोई आसान तरीका है या नहीं।

उत्तर

46

orderBy ऑर्डर करने के लिए एकाधिक पैरामीटर की एक सरणी ले सकता है। तो अगर आप कर सकते हैं:

c as c.label group by c.group for c in data | orderBy:['group','label'] 

Here is a fiddle

+0

धन्यवाद। मुझे एहसास नहीं हुआ कि आप आदेश के लिए एक सरणी में गुजर सकते हैं। मान लीजिए कि मैं कोणीय दस्तावेज में उस हिस्से को नजरअंदाज करता हूं। लेकिन कम से कम मुझे पता था कि एक आसान तरीका था क्योंकि यह एक बहुत ही सामान्य उपयोग मामला होगा। –

+1

क्या आप इस विधि का उपयोग कर एक क्रम क्रम निर्दिष्ट कर सकते हैं? यानी मैं समूह एसी द्वारा क्रमबद्ध करना चाहता हूं तो लेबल desc? –

+7

@RossJones हां, आप '['समूह', 'लेबल']' से '['+ समूह', '- लेबल']' – sh0ber

1

ऐसा लगता है कि orderBy ठीक वैसे ही काम करेगा जैसा आप चाहते हैं।

बस अपने अभिव्यक्ति लेने के लिए और अंत में orderBy जोड़ें:

c as c.label group by c.group for c in data | orderBy:'label' 

यह पहला आदेश देगा प्रत्येक आइटम के label संपत्ति के मूल्य से data सरणी, और फिर उन्हें समूह। चूंकि डेटा सही ढंग से आदेश दिया गया होगा, प्रत्येक समूह सही ढंग से क्रमबद्ध दिखाएगा।

Here's a fiddle.

नोट कैसे प्रारंभिक सरणी पीछे की ओर क्रम में परिभाषित किया गया है, लेकिन चयन में प्रत्येक समूह में सही ढंग से हल कर रहा है।

+0

है कि वास्तव में समूह बी से पहले ग्रुप ए की गारंटी नहीं हैं आप ग्रुप ए केवल "जीजी, एचएच, द्वितीय" को रोकने के लिए किया है, आदेश वापस ले लिया जाएगा। मुझे लगता है कि मैंने एक बुरा उदाहरण दिया है। : पी। मैं वास्तव में समूह द्वारा क्रमबद्ध करके इसे काम करने में सक्षम था और यदि दोनों समूह समान हैं, तो इसे लेबल मान द्वारा क्रमबद्ध करें। –

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