Bolero przetrzymuje stan, przez cały cykl życia aplikacji. Każda strona, symulowana za pomocą Routingu, ma dostęp do aktualnego stanu, co jest bardzo fajną właściwością. Poniższe nagranie pokazuje, jak to działa. Obserwuj dane, wprowadzane na każdej stronie:
Korzystając z właściwości Page Models, możemy zaprogramować zachowanie, w którym, przy każdym wyświetlaniu strony, stan będzie ustawiany domyślnymi wartościami. Poniższe nagranie pokazuje, jak to działa. Ponownie, obserwuj dane, wprowadzane na każdej stronie:
Zobaczmy, w jaki sposób możemy zrealizować powyższą funkcjonalność. Cały kod znajdziesz na GitHub’e.
Tworzymy plik main.html z poniższym kodem i umieszczamy w katalogu wwwroot:
Holes zdefiniowane w atrybutach href reprezentują linki do poszczególnych stron. $Body reprezentuje zawartość aktualnie wyświetlanej strony.
Definiujemy Templates dla poszczególnych stron:
Counter - plik wwwroot/counter.html
EnterValues - plik wwwroot/entervalues.html
ViewComponents - plik wwwroot/viewcomponents.html
Definiujemy model oraz stan początkowy dla poszczególnych stron:
Do zdefiniowania początkowego stanu wykorzystujemy funkcję Router.definePageModel
Modelujemy dostępne strony z odpowiednim Page Model:
Definiujemy główny model oraz ustawiamy stan początkowy dla całej aplikacji:
Stan poszczególnych stron został przeniesiony do Page Models. Główny model aplikacji zawiera informację o dostępnych stronach.
Definiujemy Message dla poszczególnych akcji:
Definiujemy Routing:
W zwykłym Routingu używamy funkcji Router.infer. W Routingu z modelem używamy funkcji Router.inferWithModel. Trzeci parametr funkcji przyjmuje definicję domyślnych wartości dla poszczególnych stron.
Definiujemy funkcję update:
W naszym przykładzie każdy Message może być wykonany na jednej, konkretnej stronie. W związku z tym, w pierwszej kolejności rozpoznajemy, czy jesteśmy na właściwej stronie - match model.page with - następnie wykonujemy logikę działania.
Parametr pageModel reprezentuje aktualny stan na stronie. Routing z Page Models zapewnia resetowanie stanu do wartości domyślnych, przy przechodzeniu pomiędzy stronami.
Definiujemy View Component:
Definiujemy funkcję view:
Podobnie, jak w przypadku funkcji update, w pierwszej kolejności musimy rozpoznać, która strona ma być wyświetlona - match model.page with. Pomocnicze funkcje counter, enterValues oraz viewComponents renderują odpowiedni HTML Template. Każda funkcja przyjmuje w parametrze model, należący do danej strony. Wartości modelu wstawiane są w odpowiednie Holes.
Na koniec definiujemy start aplikacji:
To tyle, jeśli chodzi o programowanie w Bolero z użyciem Page Models.
Poznane do tej pory właściwości, pozwalają programować tzw. Frontend. Okazuje się, że Bolero posiada dodatkową cechę zwaną Remoting, która pozwala kodować punkt wejścia do Backendu. Przyjrzymy się temu w następnym artykule.