我正在研究骨干应用程序的一部分,我们正在努力跟踪正在加载哪些元素以及我们需要显示哪些属性,在我们的模型中我们有一些看起来像这样的东西在初始化时,
this.set('_loaded', {items: false, files: false, currentTab:"home"});
使用该应用程序,用户可以单击某个内容来触发一个运行类似的方法,
this.model.set({ _loaded : {currentTab : $click.data('tab')} });
在视图中如何监听此更改以对其做出反应?我试过以下,
this.listenTo(this.model, 'change:_loaded.currentTab', this.switchView);
this.listenTo(this.model.get('_loaded').currentTab, 'change', this.switchView);
但无济于事,更改模型中的对象并对此更改做出反应的正确方法是什么?
答案 0 :(得分:0)
Backbone.DeepModel就是为此而建的。来自回购:
允许您使用路径语法获取和设置嵌套属性,例如 user.type。
触发更改事件以更改嵌套属性。
我整理了一个快速演示,演示了设置嵌套属性和监听嵌套属性更改:https://jsfiddle.net/83e4u420/
设置嵌套属性:
auto_increment
侦听嵌套属性更改:
this.model.set('_loaded.currentTab', currentTab);