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

但这显然不会在我的代码中的其他位置触发“更改”事件。

谢谢!

4

1 回答 1

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只关心键和值。

于 2013-06-03T21:00:33.533 回答