6
Czy istnieje sposób, aby automatycznie posortować zauważalnego tablicę, gdy nieruchomość jest związana zmieniło? Uważam, że w poniższym przykładzie mój widok jest aktualizowany po dodaniu nowej osoby, ale czy mogę uzyskać odświeżenie i zastosować funkcję sortowania, jeśli zmieni się wiek danej osoby?Automatyczne sortowanie ko.observableArray właściwości jak bound zmienić
person = {
age: ko.observable();
}
viewModel = {
people: ko.observableArray([]),
someSortFunction: function() {
this.people.sort(function(person1, person2) {
return person2.age() - person1.age();
});
}
}
<div data-bind="foreach: people">
<span data-bind="text: age"/>
</div>
Uwaga: istnieją problemy z tym podejściem, że ci, uznając ją będzie chciał być świadomi. Po pierwsze: aby zapewnić ciągłość sortowania obserwowalnej macierzy, trzeba ręcznie subskrybować tę samą właściwość na każdym elemencie tablicy. Po drugie: subskrypcje pozostają, chyba że ręcznie usuniesz je z każdego elementu, gdy usuniesz go z tablicy obserwowalnej. To stwarza potencjalne ryzyko wycieku pamięci. Używaj tej techniki z wielką ostrożnością. – Randolpho
@Randolpho :: całkiem prawdziwe ... co może wydawać się oczywiste, może prowadzić do błędu podobnego do "Uncaught RangeError: Przekroczono maksymalny rozmiar stosu połączeń", w którym "subskrybuj" jest nadal uruchamiany według sortowania ... i nigdy się nie zatrzymuje – beauXjames