使用变量作为键设置嵌套模型属性

时间:2013-06-03 20:29:10

标签: javascript backbone.js

我正在使用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";

但显然,这不会触发我的代码中的“更改”事件。

谢谢!

1 个答案:

答案 0 :(得分: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只关心键和值。