在骨干模型中监听对象的变化事件

时间:2016-05-31 11:56:46

标签: javascript backbone.js

我正在研究骨干应用程序的一部分,我们正在努力跟踪正在加载哪些元素以及我们需要显示哪些属性,在我们的模型中我们有一些看起来像这样的东西在初始化时,

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);

但无济于事,更改模型中的对象并对此更改做出反应的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

Backbone.DeepModel就是为此而建的。来自回购:

  

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

     

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

我整理了一个快速演示,演示了设置嵌套属性和监听嵌套属性更改:https://jsfiddle.net/83e4u420/

设置嵌套属性: auto_increment

侦听嵌套属性更改: this.model.set('_loaded.currentTab', currentTab);