Soy totalmente nuevo en knockout.
Bueno, me ayudas a entender cómo necesito cambiar este código:
<ol class="items" data-bind="foreach: getDisplayedItems()"> <li class="item"> <a class="simple" data-bind="html: label, attr: {href:url}, visible: count >= 1, css: { active: is_selected }"></a> <span class="count" data-bind="text: count"></span> </li> </ol>
hacerlo en orden alfabético?
Gracias por cualquier consejo Saludos
Puede ordenarlos en el lugar:
<ol class="items" data-bind="foreach: getDisplayedItems().sort((a, b) => ko.unwrap(a.label) < ko.unwrap(b.label) ? -1 : 1)"> <li class="item"> <a class="simple" data-bind="html: label, attr: {href:url}, visible: count >= 1, css: { active: is_selected }"></a> <span class="count" data-bind="text: count"></span> </li> </ol>pero creo que eso es feo, y no es reutilizable. Es mejor crear una nueva matriz observable que contenga los elementos en el orden correcto:
function App { // the observable you already have this.getDisplayedItems = ko.observableArray([...]); // a computed observable based on that this.getDisplayedItemsAlphabetical = ko.pureComputed(() => this.getDisplayedItems.sorted((a, b) => ko.unwrap(a.label) < ko.unwrap(b.label) ? -1 : 1)); }y
<ol class="items" data-bind="foreach: getDisplayedItemsAlphabetical">