2015-04-14 9 views
6

में मेरे पास एक ड्रॉप डाउन मेनू से मूल्य के आधार पर गतिशील रूप से ऑर्डर करने के लिए ऑब्जेक्ट्स की एक सरणी है। यह है कि मैं क्या मेरी सूची में अब तक है:गतिशील क्रम AngularJS

ng-repeat="item in filteredItems = (items | filter:searchInput | orderBy:canBeAnything)" 

लेकिन समस्या यह है तथापि कि छंटाई वस्तु की एक विशेषता या एक गणना मूल्य एक समारोह का उपयोग कर किया जा सकता है। यह भी अवरोही तरीके (वैकल्पिक रूप से) में क्रमबद्ध करने में सक्षम होना चाहिए।

मैं जानता हूँ कि मैं जैसे वस्तु की एक विशेषता गुजर orderBy पीछे canByAnything चर के लिए एक स्ट्रिंग का उपयोग कर सकते हैं:

“-creationDate” // descending ordering on creation date 
“customer.lastname” // ascending ordering on customers last name 

मैं भी जानता हूँ कि मैं की तरह एक समारोह orderBy कर सकते हैं:

orderBy:myCalculatedValueFunction // will order in an ascending way based on a calculated value, for example calculating the total price of the object if it was an order or something 

लेकिन जो मुझे नहीं पता और हासिल करना चाहते हैं वह है:

  • इसे कैसे गठबंधन करें ताकि मैं सॉर्ट करने के लिए फ़ंक्शन का उपयोग कर सकूं। वस्तुओं के गुण/गुणों के साथ एन संयोजन। मेरा मतलब है कि उपयोगकर्ता ने क्या चुना है, उसके आधार पर गतिशील रूप से एक या दूसरा। जो एक विशेषता या गणना मूल्य हो सकता है, या तो अवरोही या आरोही।
  • कैसे orderBy:dynamicOrderFunction की तरह कुछ करने के लिए एक अवरोही तरह से

उत्तर

10

अद्यतन orderBy:myCalculatedValueFunction परिकलित मूल्य सॉर्ट करने के लिए:

$scope.dynamicOrderFunction = function() { 
    if (orderByString) { 
     return '-creationDate'; 
    } 
    else { 
     return myCalculatedValueFunction; 
    } 
} 

orderBy भी एक 3 संपत्ति है कि एक बूलियन स्वीकार करता है और जब true orderBy रिवर्स जाएगा। (orderBy:dynamicOrderFunction:reverseOrder जहां $scope.reverseOrder = true; // or false)


संपादित

आप वास्तव में एक समारोह के इस तरह से एक स्ट्रिंग के बीच orderBy जाने का प्रयास कर समस्या आने पर होगा। काम कर रहे गतिशील क्रम समारोह के लिए this jsfiddle चेकआउट करें।

+0

यह बहुत उपयोगी काम करता है –

0

तो आपको अपना खुद का फ़िल्टर बनाना होगा और जो भी आप चाहते हैं उसे करें, Google पर बहुत सारे उदाहरण हैं। बस खोज:

कोणीय कस्टम फ़िल्टर

शोध पिछले दिनों, मैं फिल्टर निर्माण के साथ somes समस्याओं का अनुभव और मैंने पाया है कि: https://github.com/a8m/angular-filter

मैं इसे तुरंत अपने dependcies में जोड़ दिया है, मुझे पता है मैं इसे जल्द ही उपयोग करूँगा। हो सकता है कि यह आपकी भी मदद करेगा। अगर यह आपकी समस्या का समाधान करने में आपकी सहायता करता है तो मेरा उत्तर मान्य करना न भूलें;)