Estoy trabajando en una aplicación backbone.js y he llegado al punto en que tengo una cantidad de enrutadores y vistas que representan cada parte de mi aplicación. En el ejemplo del enrutador simplificado a continuación, tengo dos ubicaciones; account
& users
.¿Vistas de limpieza con backbone.js?
Ambas vistas en cada ubicación representan su contenido en un elemento mutuo, llamado #appcontainer
. Mi sentido común dice que debo asegurarme de remove
cada vista antes de lanzar otra para evitar colisiones en los enlaces, DOM y otras cosas.
Pero como no puedo saber con certeza si una vista ya se ha creado, no puedo llamar explícitamente al previousView.remove()
desde mi enrutador o vistas.
¿Sería suficiente agregar $(this.el).empty()
al constructor de cada vista para eliminar eventuales enlaces y elementos anteriores del DOM?
Aquí está el ejemplo del enrutador?
var myRouter = Backbone.Router.extend({
routes: {
"account": "account",
"users": "users"
},
account: function() {
view = new AccountView({});
view.render();
},
users: function() {
view = new UserView({});
view.render();
}
});
Hi! Gracias por tu respuesta. ¿La ejecución de '.remove()' -method de jQuery se separa de backbones '.remove()' en las vistas? – Industrial
.remove() de Backbone() es solo un alias de .remove() de jquery, por lo que para estos fines son iguales. – MrGrigg
@MrGrigg ** ¿Podría aclarar a dónde iría el método de renderizado? Parece que entra en el enrutador, pero quiero asegurarme de ... ** _Me gusta mucho el aspecto de este código y, a primera vista, parece que sería una buena forma de estructurar una aplicación_. – Emerson