我目前对我的剑道图表有两个步骤。第一个过程是允许用户在图表上选择他们想要的数据集(系列)。然后他们选择一个模板。模板是图形设置ex(颜色主题,图表类型线,条形,圆形等)。
目前,如果用户选择他们想要的数据集,我会将系列信息返回到图表,然后使用模板设置填充图表。
我还允许用户动态更改模板设置。例如,条形图到Line,Area,Circle等。他们也可以改变主题。设置第一个加载时,问题就出现了,我传递的系列信息是:
{
[name: "string", data: []],
[name: "string", data: []]
}
当我在模板上进行更改后检查系列对象时,我看到以下内容已添加到对象中:
{
[name: "string",
data: [],
type: "area",
color: "ff6800",
ect...
],
[name: "string",
data: [],
type: "area",
color: "ff6800",
ect...
],
}
问题在于我可以将对象类型修改为正确的选定类型。我甚至可以将颜色值更改为每个系列的不同颜色。但是,因为我使用的是剑道主题,图表背景会发生变化,但系列颜色不会匹配。我可以想出一个功能来选择图表的背景颜色,然后选择你想要的系列颜色。但如果可能的话,我宁愿使用剑道方法。
我也认为如果我清除那个对象,只使用我传递的设置和数据就可以了。但是,我不希望每次进行页面级别更改时都要访问数据库,并且我也注意到即使我创建临时对象,我的对象也会被赋予所有图表属性。
提前谢谢!
答案 0 :(得分:4)
我在剑道论坛上问了这个问题并收到了以下答案。
在传递图表选项之前,您需要保留图表选项的深层副本。这样,您只需使用原始选项即可重新创建图表。
var options = { ... };
$("#chart").kendoChart(
// No side effects on options
$.extend(true, {}, options)
);
如果你看一下这个例子,这样做是有意义的,因为那时你可以在页面上出现不同的事件时修改你的图表。例如,当我想要更改主题或图表类型时。我可以修改:
options.seriesDefaults = { type = "bar" };
以下是Tsvetomir提供的示例的链接:http://jsbin.com/ulohof/1/edit
以下是关于剑道论坛问题的链接:http://www.kendoui.com/forums/dataviz/chart/kendo-chart-dynamic-series.aspx