我正在尝试使用 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)如何根据模型的一部分推送新状态?
Bonus :)
4) 您将如何为所描述的应用程序编写代码?
Thanks!