2011-04-17 14 views
11

Jaki jest dobry sposób na uporządkowanie widoków? Załóżmy, że mam element div, który będzie zawierał widok z perspektywy panelu administracyjnego użytkowników - pojawi się lista użytkowników wraz z opcjami wyboru liczby wyświetlanych na raz, opcji sortowania, strony, filtrów, etc ...backbone.js - widoki w widokach i zarządzanie zdarzeniami

Czy chciałbym mieć widok zewnętrzny zawierający wszystko oprócz tabeli i danych? A następnie widok wewnętrzny zawierający tabelę (wraz z danymi)? I czy paginacja ma swój własny pogląd? W jaki sposób widok paginacji będzie korzystał z zdarzenia kliknięcia, aby zaktualizować widok użytkownika? Po prostu nie mam pojęcia, jak uporządkować widoki, a jednocześnie mogę mieć różne zdarzenia powodujące wyświetlanie innych widoków do render()/kolekcji do fetch().

Więc podstawowym hierarchia będzie wyglądać następująco:

- User View 
    - Table 
    - List of Users 
    - Pagination 
    - List of available numbers to click 
    - Filters 
    - Possible filters to apply to the data 

Jeszcze klikając filtr lub numer w paginacji powinny być w stanie uzyskać kolekcję fetch() nowych danych i odświeżyć widok;

+1

Nie jestem w 100% pewien, że rozumiem, jakie jest Twoje pytanie, ale być może ten wpis na blogu wskaże Ci właściwy kierunek [Wiązanie kolekcji do widoku] (http://liquidmedia.ca/blog/2011/ 02/backbone-js-part-3 /) – dogenpunk

+0

Jest podobne pytanie, na które odpowiedziałem w sprawie widoku granularity: http://stackoverflow.com/questions/4463136/whats-the-appropriate-granularity-for-backbone-js-views/4464570 # 4464570 – Julien

Odpowiedz

0

Staram się odzwierciedlać moją strukturę MVC po stronie serwera tak bardzo, jak tylko mogę.

Wszystko, co można umieścić w wtyczce, robię tak, a następnie utrzymuję te wtyczki w oddzielnej lokalizacji dla kontrolerów, które wywołują wtyczki. Tak więc w twoim przypadku widok tabeli dla listy użytkowników byłby przechowywany w wtyczce tabeli lub w module "użytkowników", gdyby był to kod, którego naprawdę używałam tylko raz.

Jeśli muszę zastąpić wyjście wtyczki, to zapisuję widok w folderze modułu.

Co staram się unikać, to przechowywanie widoków wyłącznie według typu HTML w nich, więc nie będę przechowywać widok modułu jako "tabela", ponieważ będzie się mylić, jeśli później zmieni się na listę. Oczywiście, jeśli mam wtyczkę "table", widok na to ma być tabelą, ale zmiana widoku JavaScript oznacza po prostu zmianę wywołania wtyczki z 'table' na 'list'.

3

Ja drugi dogenpunk. Chciałbym mieć jedną kolekcję użytkowników/widok. Ponieważ cała powyższa hierarchia dotyczy tej jednej kolekcji użytkowników. Wszystkie jego funkcje manipulują tą kolekcją, a następnie ponownie wyświetlasz widok użytkownika.

Możesz mieć drugi widok użytkownika, jednego użytkownika, powiązanego z modelem, jeśli chcesz zastosować zmiany na serwerze tylko dla tego użytkownika.

0

Moje 2 centy na oryginalne pytanie. Jeśli naprawdę chcesz zrobić to MV *, paginacja będzie widokiem, twój stół będzie widokiem. I niech Twoja kolekcja wyśle ​​zdarzenia (wyzwalacze), aby zmienić widok. Kolejne pytania, które zadałbym sobie również, to, co będzie miało wpływ, gdy zmieni się moja kolekcja? Na przykład w twoim przypadku nie sądzę, że zmiany w kolekcji wpłyną bezpośrednio na twój userView, wpływa to tylko na tabelę i paginację.

Powiązane problemy