Я пытаюсь выяснить, подходит ли Backbone.js для моего текущего проекта: приложения для визуализации.
У меня есть ряд вопросов:
1) Состояние/маршрутизация?
Поскольку это не обычное приложение RESTful, а скорее приложение визуализации с различными типами диаграмм и настройками для этих диаграмм, как сохранить состояние в URL-адресе? Допустим, моя модель areaChart имеет ряд значений по умолчанию, например:
AreaChartModel = Backbone.Model.extend({
defaults: {
selectedCountries: [],
year: 1970,
stacked: false
},
initialize: function(){
[...]
}
});
При обновлении модели я хотел бы сериализовать некоторые из этих атрибутов, чтобы добавить в закладки конкретное состояние: chartApp.html#!year=1970&stacked=false и т. д.
И наоборот, при запуске приложения с этим состоянием, как мне «депарамировать» состояние URL-адреса и установить модель? Могу ли я использовать внутреннюю маршрутизацию Backbone?
2) Контроллер и связь?
Кажется, что Backbone имеет довольно тесную связь между представлением и моделью? Это действительно то, как я должен привязать, например, мой areaChartView к модели?
AreaChartView = Backbone.View.extend({
initialize: function(){
areaChartModel.bind("change:year", this.render);
}
});
Разве это не обычно роль контроллера?
3) Продолжение: модель или контроллер?
Учитывая этот сценарий:
Изменение в «Боковой панели» должно запускать последовательность функций:
1) «Должны быть загружены новые данные для текущего выбора»
2) «На основе этих данных должны быть обновлены шкалы в представлении «Визуализация». "
3) "Вид визуализации должен быть отрендерен"
Где я должен разместить эти функции и как я могу создать событие в модели, которое я запускаю, когда состояние стабильно? (т.е. когда все функции были вызваны и пришло время установить состояния просмотра?)