अंडरस्कोर मिक्सिंस
@ Emil_lundberg के उत्तर पर विस्तार करते हुए, आप "मिक्सिन" भी लिख सकते हैं यदि आप अंडरस्कोर का उपयोग कर रहे हैं छँटाई के लिए एक कस्टम फंक्शन बनाने के लिए यदि यह एक तरह का सॉर्टिंग है जिसे आप कहीं अनुप्रयोग में दोहरा सकते हैं।
उदाहरण के लिए, हो सकता है कि आपके पास "ASC" या "DESC" के क्रम के साथ एक नियंत्रक या दृश्य सॉर्टिंग परिणाम हो, और आप उस प्रकार के बीच टॉगल करना चाहते हैं, आप कुछ इस तरह कर सकते हैं:
Mixin.js
_.mixin({
sortByOrder: function(stooges, prop, order) {
if (String(order) === "desc") {
return _.sortBy(stooges, prop).reverse();
} else if (String(order) === "asc") {
return _.sortBy(stooges, prop);
} else {
return stooges;
}
}
})
उपयोग उदाहरण
var sort_order = "asc";
var stooges = [
{name: 'moe', age: 40},
{name: 'larry', age: 50},
{name: 'curly', age: 60},
{name: 'July', age: 35},
{name: 'mel', age: 38}
];
_.mixin({
sortByOrder: function(stooges, prop, order) {
if (String(order) === "desc") {
return _.sortBy(stooges, prop).reverse();
} else if (String(order) === "asc") {
return _.sortBy(stooges, prop);
} else {
return stooges;
}
}
})
// find elements
var banner = $("#banner-message");
var sort_name_btn = $("button.sort-name");
var sort_age_btn = $("button.sort-age");
function showSortedResults(results, sort_order, prop) {
banner.empty();
banner.append("<p>Sorting: " + prop + ', ' + sort_order + "</p><hr>")
_.each(results, function(r) {
banner.append('<li>' + r.name + ' is '+ r.age + ' years old.</li>');
})
}
// handle click and add class
sort_name_btn.on("click", function() {
sort_order = (sort_order === "asc") ? "desc" : "asc";
var sortedResults = _.sortByOrder(stooges, 'name', sort_order);
showSortedResults(sortedResults, sort_order, 'name');
})
sort_age_btn.on('click', function() {
sort_order = (sort_order === "asc") ? "desc" : "asc";
var sortedResults = _.sortByOrder(stooges, 'age', sort_order);
showSortedResults(sortedResults, sort_order, 'age');
})
यहाँ एक JSField यह प्रदर्शित करता है: SortFy Mixin के लिए JSFiddle