【发布时间】:2011-10-18 08:22:33
【问题描述】:
我正在尝试构建类似于下图所示的东西。
状态和历史管理
我希望能够随时在应用程序中序列化当前状态,最好能够对这些参数进行版本控制。
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) 上述方法是否是一种有效的版本控制方式?(如果状态参数/API 发生变化,则为 v1 路由提供一个特定的处理程序,为 v2 提供另一个处理程序?) 如果您能举例说明适用于这个小部件化可视化应用程序的状态/历史解决方案,我会非常高兴 :)
3) 我想防止在拖动时间滑块和某些其他事件时设置历史条目。我可以在拖动滑块时删除 collection.change 事件监听器(它跟踪所有实例化的 WidgetModel)吗?或者你有什么建议?
数据管理
在实例化视图之前(以及当它们的模型的选择属性发生更改时)我想确保加载数据(300-400 KB 的数字统计数据)。
4) 什么是在 Backbone 中解决此问题的典型方法?(即延迟 model.trigger 事件直到属性稳定。)
【问题讨论】:
标签: javascript backbone.js state data-visualization browser-history