我目前的剑道图表有两个步骤。第一个过程是允许用户在图表上选择他们想要的数据集(系列)。然后他们选择一个模板。模板是图形设置(颜色主题、图表类型线、条形图、圆形等)。
当前,如果用户选择他们想要的数据集,我会将系列信息返回到图表,然后使用模板设置填充图表。
我还允许用户即时更改模板设置。例如条形图、折线图、面积图、圆图等。他们还可以更改主题。问题在于,当设置第一个负载时,我传递的系列信息是:
{
[name: "string", data: []],
[name: "string", data: []]
}
当我在模板上进行更改后检查系列对象时,我看到以下内容添加到了对象中:
{
[name: "string",
data: [],
type: "area",
color: "ff6800",
ect...
],
[name: "string",
data: [],
type: "area",
color: "ff6800",
ect...
],
}
问题是我可以将对象类型修改为正确的选定类型。我什至可以将每个系列的颜色值更改为不同的颜色。但是,因为我使用的是 Kendo 主题,图表背景会发生变化,但系列颜色不会匹配。我可以想出一个函数来选择图表的背景颜色,然后选择您想要的系列颜色。但如果可能的话我宁愿使用剑道方法。
我还认为,如果我清除该对象并仅使用我传递的设置和数据,它就可以工作。但是,我不想每次进行页面级别更改时都必须访问数据库,并且我还注意到,即使我创建临时对象,我的对象也会获得所有图表属性。
提前谢谢您!
最佳答案
我在 Kendo 论坛上提出了这个问题并收到了以下答案。
在传入图表选项之前,您需要保留图表选项的深拷贝。这样您就可以仅使用原始选项重新创建图表。
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
关于charts - 剑道图动态系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685600/