Я пытаюсь создать нечто похожее на то, что показано на рисунке ниже.
Государственный и исторический менеджмент
Я хочу иметь возможность сериализовать текущее состояние в любое время в приложении и предпочтительно иметь возможность изменять эти параметры.
1) Прежде всего, что является хорошим способом переопределения параметров defaultState с любыми допустимыми параметрами, указанными в хэше?
defaultState = {
mode : "2up", //Defines layout and how many widgets to init
models : [{year: 1980, selected: "SE"},
{year: 2010, selected: "NO"}] //Widget models
}
var AppRouter = Backbone.Router.extend({
routes: {
'': 'hashChangeHandler',
'v1?:params': 'hashChangeHandlerV1'
},
hashChangeHandlerV1: function(params) {
//here do something to override defaultState with params on init
//set models and layout etc.
}
});
//Handle history entries separately??
collection.bind("change", updateHistory)
function updateHistory () {
//each model toJSON(), then jQuery.param.querystring etc.
appRouter.navigate('v1' + state, false);
}
2) Может ли вышеизложенное быть допустимым способом создания версий? (Наличие определенного обработчика для маршрута v1 и другого для v2, если параметры состояния / API изменяются?) Если бы вы могли привести пример решения состояния / истории, которое будет работать для этого приложения для визуализации с использованием виджетов, я был бы очень рад:)
3) Я бы хотел запретить запись в журнале при перетаскивании таймлайдера и некоторых других событиях. Могу ли я удалить слушатель события collection.change (который отслеживает все экземпляры WidgetModels) при перетаскивании ползунка, или что бы вы предложили?
Управление данными
Перед созданием представлений (и при изменении атрибута выбора их модели) я хотел бы убедиться, что данные (300-400 КБ числовых статистических данных) загружены.
4) Какой типичный способ решения этой проблемы в Backbone? (т.е. откладывание событий model.trigger до тех пор, пока атрибуты не станут стабильными.)