2011-07-05 17 views
7

Mam projekt backbone.js nad którym pracowałem, i mam go tak skonfigurowany, że mogę przeciągać i upuszczać wiersze (które są modelami backbone.js) i przy pomocy jQuery UI aktualizacja wydarzenie Jestem w stanie sprawić, że moje modele będą ponownie obliczać swoje zamówienie i wszystko będzie dobrze. Zastanawiałem się, czy ktoś nowy, czystszy sposób, aby to się stało. Poniżej zamieściłem kod.Sortowanie jQuery UI i backbone.js

$(".section").sortable({items: 'tr', update: function() 
{ 
    console.log("Event Fire!"); 
    secv.mySort(); 
}}); 

secv to mój widok modelu, który przechowuje tabelę. Funkcja mySort przechodzi i określa kolejność elementów oraz dokonuje niezbędnych aktualizacji.

+0

czego nie lubisz w tym rozwiązaniu? Myślę, że działa całkiem dobrze bez całego mnóstwa kodu. W ten sposób mam teraz również zaimplementowane elementy sortujące z kręgosłupem. – c3rin

+0

Inna opcja, która jest bardziej skomplikowana, znajduje się tutaj: http://stackoverflow.com/questions/10147969/saving-jquery-ui-sortables-order-to-backbone-js-collection – Cymen

Odpowiedz

1

Przypuszczam, że ustawiasz właściwość kolekcji w widoku prawdopodobnie w metodzie inicjowania. W tej samej metodzie należy powiązać metodę widoku ze zdarzeniem "zmiana" lub "odświeżenie" kolekcji. Ta metoda po prostu przerysowałaby posortowaną kolekcję; sortowanie kolekcji przed dokonaniem tego, jeśli to konieczne.

Teoretycznie Twój model mógł zostać zaktualizowany o nowe położenie, a jeśli kolekcja ma funkcję komparatora, kolekcja automatycznie się ułoży. W takim przypadku powiązanie ze zdarzeniem "odświeżania" kolekcji wyzwoli wyżej wspomnianą metodę, która musi tylko ponownie renderować część kolekcji widoku.

+0

A także możesz przypisać nowy komparator do kolekcji przed sortowanie. 'collection.comparator (function (model) {return model.get ('some_property');}); collection.sort(); 'Spowoduje to uruchomienie kolekcji _reset_ event, którą możesz powiązać z renderingiem widoku kolekcji. –

+3

Jak to odpowiada na oryginalne pytanie? Problem polega na tym, że widok (DOM) jest ułożony przed kolekcją modeli, a nie odwrotnie. – kahoon