2016-05-31 78 views
1

我正在研究当前的骨干应用程序的一部分,并且我们试图跟踪哪些元素正在加载以及需要显示哪些属性我们的模型中,我们有一些看起来像这样在初始化时,在骨干模型中侦听对象上的更改事件

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

Backbone.DeepModel是为此目的而建造的。从回购:

允许您使用路径语法获取和设置嵌套属性,例如, user.type。

触发器更改嵌套属性更改事件。

我把一个快速演示,同时显示设置嵌套属性和监听嵌套属性变化:https://jsfiddle.net/83e4u420/

设置嵌套的属性: this.model.set('_loaded.currentTab', currentTab);

听嵌套的属性改变: this.listenTo(this.model, 'change:_loaded.currentTab', this.switchView);