この質問を言葉で説明するのは非常に難しいので、明確にする必要がある場合はお知らせください。私はbackbone.jsを初めて使用するので、ばかげた質問かもしれません。
バックボーンを使用してグラフを簡単に作成したい(highchartsライブラリ)。モデルの「defaults」オブジェクトにすべての一般的なhighcharts設定を含む大規模なjsonオブジェクトを保持したいと思います。次に、いくつかの変数をオーバーライドしたいと思います。たとえば、チャートをレンダリングする必要があるdom要素の名前を含む変数です。
これが私のコードです:
var app = {
Views:{},
Models:{},
Collections:{},
init:function(){
new app.Views.PageView();
}
};
$().ready(_.bind(app.init,app));
app.Models.chart = Backbone.Model.extend({
defaults:{
chart:{
renderTo:'charts',
backgroundColor:'#e1e1e1',
height:200,
width:200,
defaultSeriesType:'spline',
spacingRight:40,
animation:false
},
colors:['#000', '#AA4643'],
title:{
text:''
},
//lots lots lots of other attributes defined here.
app.Views.ChartView = Backbone.View.extend({
render : function() {
var chartContainer = this.model.attributes.chart.renderTo;
$('#charts').append("<div id="+chartContainer+"></div>");
new Highcharts.Chart(this.model.toJSON());
return this;
}
});
var chartDetails = [{chart:{renderTo:'div1'}},{chart:{renderTo:'div2'}}];
app.Views.PageView = Backbone.View.extend({
el: $("#charts"),
initialize : function(){
this.chartCollection = new app.Collections.Charts(chartDetails);
this.render();
},
render: function(){
var that = this;
_.each(this.chartCollection.models, function(item){
that.renderChart(item);
})
},
renderChart : function (item) {
var chartView = new app.Views.ChartView({
model: item
});
chartView.render();
}
});
したがって、ここでの本当の質問は、新しいコレクションを定義するときに、モデルで指定された「デフォルト」をオーバーライドする「chartDetails」オブジェクトを提供することです。したがって、defaults.charts.renderToプロパティを更新するのではなく、完全なdefaults.chartsオブジェクトを置き換えます。置き換えたい値を除いて、そこに保存されているもの(backgroundColorなど)をすべて保持するようにするにはどうすればよいですか?
よろしくお願いしますk