Pracuję nad aplikacją backbone.js i osiągnąłem punkt, w którym mam wiele routerów i widoków reprezentujących każdą część mojej aplikacji. W poniższym przykładzie uproszczonego routera mam dwie lokalizacje; account
& users
.Czyszczenie widoków za pomocą pliku backbone.js?
Oba widoki w każdej lokalizacji powodują, że ich treść jest elementem wzajemnym, nazwanym #appcontainer
. Mój zdrowy rozsądek mówi, że powinienem się upewnić, że każdy widok przed uruchomieniem kolejnej uniemożliwi kolizje w wiązaniach, DOM i tym podobne.
Ale ponieważ nie wiem na pewno, czy widok został już utworzony, nie mogę jednoznacznie zadzwonić pod numer previousView.remove()
z poziomu routera lub widoków.
Czy wystarczy dodać $(this.el).empty()
do konstruktora każdego widoku, aby wyczyścić wszelkie wcześniejsze wiązania i elementy z DOM?
Oto przykład routera?
var myRouter = Backbone.Router.extend({
routes: {
"account": "account",
"users": "users"
},
account: function() {
view = new AccountView({});
view.render();
},
users: function() {
view = new UserView({});
view.render();
}
});
Witam! Dzięki za odpowiedź. Czy metoda '.remove()' metody jQuery oddziela się od szkieletów '.remove()' w widokach? – Industrial
Backbone's .remove() to po prostu alias dla jquery's .remove(), więc dla tych celów są one równe. – MrGrigg
@MrGrigg ** Czy możesz wyjaśnić, gdzie pójdzie metoda renderowania? Wygląda na to, że trafia do samego routera, ale chcę się upewnić ... ** _I naprawdę podoba mi się wygląd tego kodu i na pierwszy rzut oka wygląda na to, że byłby to dobry sposób na skonstruowanie aplikacji. – Emerson