我正在使用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";
但显然,这不会触发我的代码中的“更改”事件。
谢谢!
答案 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
只关心键和值。