2016-05-31 89 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);