que estoy tratando de hacer un seguimiento del estado en esta aplicación desde Backbone.js:gestión del estado Backbone.js/inicialización vista basado en un fragmento url
que tengo un "ChartAppModel" con una conjunto de valores predeterminados:
ChartAppModel = Backbone.Model.extend({
defaults: {
countries : [],
selectedCountries : [],
year : 1970,
},
initialize: function() {
loadAbunchOfData();
checkStartState();
}
});
Si se les da un fragmento de inicio, este estado por defecto debería sin embargo ser sobrescrito:
var startState = $.deparam.fragment(); //using Ben Alman's BBQ plugin
this.set({selectedCountries: startState.s, year: startState.y});
Ahora, por ejemplo, el SidebarView está listo para ser actualizado:
ChartAppViewSidebar = Backbone.View.extend({
initialize: function(){
this.model.bind("change:selectedCountries", this.render);
},
render : function(){
[... render new sidebar with check boxes ...]
},
El problema es que también tengo un controlador de eventos en la barra lateral que actualiza el modelo:
events: {
"change input[name=country]": "menuChangeHandler",
},
menuChangeHandler : function(){
[... set selectedCountries on model ...]
},
Así que habrá una retroalimentación lazo ... y luego, también me gustaría una manera de empujar a un nuevo estado - por lo que escucho para modelar los cambios:
ChartAppModel = Backbone.Model.extend({
initialize: function() {
this.bind("change", this.setState);
}
});
... y relativel Y pronto este estado-manager se derrumbará ...
Preguntas:
1) ¿Cómo init mis puntos de vista (por ejemplo, "el cual casillas de verificación deben ser revisados") basado en el fragmento? (se aprecian sugerencias sobre las mejores prácticas para el estado/estado de inicio que no es una "ruta" típica)
2) ¿Cómo puedo evitar que mis vistas configuren un atributo en el modelo que ellos mismos escuchan?
3) ¿Cómo puedo presionar un nuevo estado basado en una parte del modelo?
Bono :)
4) ¿Cómo establecer el código de la aplicación descrita?
Gracias!
Y eso fue una gran respuesta: comencé a reconsiderar el uso de "rutas". Pero digamos que tengo un estado de inicio (url) con 5 parámetros: año = 1979, apilado = verdadero, diseño = pantalla completa, seleccionado = [Suecia, Finlandia], zoom = 2. En función de estos parámetros, los datos deberían cargarse, el eje x/y debería calcularse y las vistas deberían mostrarse, etc. ¿Cuál sería el enfoque utilizando rutas? Pseudocódigo es MUY BIENVENIDO: =) – dani
gracias @dani, no estaba seguro de cuán clara era mi explicación. En una relación ligeramente relacionada, tener el control deslizante debajo del plano horizontal podría añadir un poco de confusión para el usuario. Actualizaré la respuesta original con algún pseudo código. – 34m0