Wpis z mikrobloga

Siemka, mam pewien problem i zastanawiam się jak go rozwiązać.
Mam jedną podstronkę (wyniki wyszukiwania nieruchomości), która ma dużo javascriptu.
Postanowiłem na tej jednej stronce użyć angulara, bo kod się zaczął rozjeżdżać.
Użytkownik może zastosować wiele opcji wyszukiwania np. sortowanie, paginacja, filtrowanie po typach obiektów, cenie, lokalizacji itp.
Wszystko to musi się zapisać do query stringa w url. np /properties?orderby=pricedesc&priceFrom=10000&ptype=house itd (jest ich dość dużo)

Problem: Jak uzyskać synchronizację modelu js z urlem?
Nie mogę użyc tutaj żadnego routingu, bo to jest jedna strona i wszystko jest obsługiwane przez parametry urla.
Zmiany modelu mogą nastąpić poprzez js (użytkownik kliknie jakiś filtr:checkbox) jak i przez zmianę parametrów poprzez kliknęcie linka (np następna strona wyników to będzie link z parametrem page+1).

Aktualnie mam 2 metody, które muszą być ze sobą zsynchronizowane w 100%. Jedna się odpala jak model w js się zmieni i aktualizuje ona url (z modelu js). Druga nasł#!$%@? czy url się zmieni i aktualizuje ona model w js (parsuje nowy url).
Gdy obie metody się rozsynchronizują to cały angular się zapętla, bo zmiana modelu aktualizuje url, zmiana urla aktualizuje model itd itd w kółko.

Jest jakieś lepsze rozwiązanie tego probemu?

#webdev #angularjs #angular #javascript
  • 2
@budyn Dlaczego routing odpada? Korzystasz tylko na jednrj stronie, ustawiasz jeden adres ktory i tak bedzie wzgledem ostatniej sciezki czyli wypisujesz paramsy. Jak nie to pobierasz z $location caly adres i dzielisz stringa odpowiednio plus mozesz watcha ustawic i zawsze wykona Ci funkcje dzielaca.
@zajcus: @budyn: możesz przecież jako parametr dać ciąg zawierający "/" :D to wykorzystuje do filtrów listing/marka-nike/kolor-bialy/material-skora/ a jeżeli potrzebujesz czegoś takiego np /properties?orderby=pricedesc&priceFrom=10000&ptype=house to masz przecież metode search w $location tego zas wykorzystuje do sortowania i wyszukiwarki listing/marka-nike/kolor-bialy/material-skora?search=yuolololo&sort=desc