我正在尝试使用 Backbone.js 跟踪此应用程序中的状态:
我有一个带有一组默认值的“ChartAppModel”:
ChartAppModel = Backbone.Model.extend({
defaults: {
countries : [],
selectedCountries : [],
year : 1970,
},
initialize: function() {
loadAbunchOfData();
checkStartState();
}
});
如果给定一个起始片段,则应覆盖此默认状态:
var startState = $.deparam.fragment(); //using Ben Alman's BBQ plugin
this.set({selectedCountries: startState.s, year: startState.y});
现在,例如 SidebarView 已准备好更新:
ChartAppViewSidebar = Backbone.View.extend({
initialize: function(){
this.model.bind("change:selectedCountries", this.render);
},
render : function(){
[... render new sidebar with check boxes ...]
},
问题是我在更新模型的侧边栏上也有一个事件处理程序:
events: {
"change input[name=country]": "menuChangeHandler",
},
menuChangeHandler : function(){
[... set selectedCountries on model ...]
},
所以会有一个反馈循环......然后,我还想要一种推动新状态的方法 - 所以我听模型变化:
ChartAppModel = Backbone.Model.extend({
initialize: function() {
this.bind("change", this.setState);
}
});
......很快这个国家经理就会崩溃......
问题:
1)我如何根据片段初始化我的视图(例如“应该检查哪些复选框”)?(任何关于非典型“路线”的状态/开始状态最佳实践的提示都值得赞赏)
2)如何避免我的视图在他们自己监听的模型上设置属性?
3)如何根据模型的一部分推送新状态?
奖金 :)
4) 你将如何布置所描述的应用程序的代码?
谢谢!