2013-06-03 126 views
0

我正在使用DeepModel訪問Backbone.js模型中的嵌套屬性。所以這工作得很好:使用變量作爲鍵設置嵌套模型屬性

this.model.set({'chart_configs.mentions_bar_graph.date': "cats"}); 

不過,我想使用一個變量作爲我的鑰匙的一部分,所以這樣的:

this.model.set({'chart_configs.'+ this.chartName + '.date': "cats"}); 

這是一些如何可能?我知道我可以做到這一點

this.model.attributes.chart_configs["mentions_bar_graph"].date = "cats"; 

但是,顯然,不會觸發「更改」事件,否則在我的代碼中。

謝謝!

回答

2

Model#set可以稱得上有兩種方式:

m.set('key', 'value'); 
m.set(an_object_of_keys_and_values); 

所以,你應該能夠得到過去使用的Model#set第一種形式:「你不能定義一個對象字面那樣」的問題:

this.model.set('chart_configs.' + this.chartName + '.date', 'cats'); 

如果DeepModel不喜歡,那麼你可以做的很長的路要走:

var values = { }; 
values['chart_configs.' + this.chartName + '.date'] = 'cats'; 
this.model.set(values); 

對象是一個對象,它是否具有名稱,set只關心鍵和值。

+0

這裏是對mu工作的代碼太簡短的解釋。 http://jsfiddle.net/9cvVv/490/ –

+0

看起來像deepmodel允許我使用你的第一個解決方案。感謝您的解釋! – thegreyspot