5

मुझे एनजी-दोहराना आदेश का उपयोग करने में कोई समस्या है जब टेक्स्ट में संख्याएं होती हैं।AngularJS ng-repeat order आदेश संख्याओं को गलत तरीके से

नमूना डेटा:

[ 
    {booth: 'p1'}, 
    {booth: 'p2'}, 
    {booth: 'p3'}, 
    {booth: 'p4/5'}, 
    {booth: 'p6/7'}, 
    {booth: 'p8'}, 
    {booth: 'p9'}, 
    {booth: 'p10'}, 
    {booth: 'p11'}, 
    {booth: 'p12'}, 
    {booth: 'p13'} 
] 

orderBy साथ एनजी-दोहराने का उपयोग करते समय: p1, p10, P11, p13, p2, ect

: 'बूथ' इस तरह के रूप में यह सूची है मैं समझता हूं कि यह व्यवहार की उम्मीद है लेकिन क्या किसी को पता है कि मैं बूथों को सूचीबद्ध करने के लिए कैसे प्राप्त कर सकता हूं?

कौन सा होगा: P1, P2, P3, P4/5, ect

मैं भी अगर मुद्दा था क्योंकि संख्या पूर्णांक नहीं थे, लेकिन एक ही मुद्दा लौटे देखकर कोशिश की है।

किसी भी मदद के लिए अग्रिम धन्यवाद।

+0

क्योंकि मैं भी तो, मैं अपने खुद के सवाल को हल नहीं कर सकते करने के लिए नए कर रहा हूँ अभी तक लेकिन यहाँ मुद्दे पर मेरा उत्तर है। मैं एक कस्टम फ़िल्टर का उपयोग कर इसे हल करने समाप्त हो गया। नोट: पहेली में, एक पार्सफ्लैट और एक टुकड़ा है, इस फ़िल्टर को आपके द्वारा पारित किए जा रहे डेटा के आधार पर संशोधित करने की आवश्यकता होगी। फिडल: http://jsfiddle.net/L3HjP/3/ – creatifyme

उत्तर

12

जावास्क्रिप्ट की अंतर्निहित स्ट्रिंग तुलना आपके उद्देश्यों के लिए काम नहीं करेगी। मुझे लगता है कि प्राकृतिक प्रकार की आवश्यकता है, जो तारों को मानव तरीके से क्रमबद्ध करने के लिए आवश्यक है। मुझे here ब्लॉग से ठोस कार्यान्वयन here मिला। यह बहुत व्यापक और काफी जटिल है इसलिए मैं यहां स्रोत कोड की व्याख्या करने की कोशिश नहीं करूंगा (स्पष्टीकरण के लिए ब्लॉग देखें)।

फिर आप प्राकृतिक प्रकार के लिए एक कस्टम फ़िल्टर बनाने और की तरह अपने HTML में उपयोग कर सकते हैं:

एचटीएमएल

<div ng-app="myApp"> 
    <div ng-controller="ctrlMain"> 
     <div ng-repeat="item in data | naturalSort">{{item.booth}}</div> 
    </div> 
</div> 

जावास्क्रिप्ट - मैं बाहर प्रकार के कार्यान्वयन छोड़ दिया है चूंकि यह लंबा है और मेरे द्वारा नहीं बनाया गया है, लेकिन कार्रवाई में इसे देखने के लिए नीचे डेमो को जांचें।

app.filter('naturalSort',function(){ 
    function naturalSort (a, b) { 
     // Please see the demo for this code, it is somewhat long. 
    } 
    return function(arrInput) { 
     var arr = arrInput.sort(function(a, b) { 
      return naturalSort(a.booth,b.booth); 
     }); 
     return arr; 
    } 
}); 

नीचे डेमो में तरह कार्यान्वयन विभिन्न संभावनाओं (तिथि, स मान, खाली स्थान के) कि कई स्थितियों में इस्तेमाल किया जा सकता है (हालांकि यह आपके उदाहरण के लिए एक छोटे से overkill हो सकता है) को शामिल किया गया।

Here is a demo

+2

आपके पास बहुत बढ़िया प्राकृतिक सॉर्ट एल्गोरिदम है। – SoluableNonagon

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