3

我目前的剑道图表有两个步骤。第一个过程是允许用户在图表上选择他们想要的数据集(系列)。然后他们选择一个模板。模板是图形设置前(颜色主题、图表类型线、条形、圆形等)。

目前,如果用户选择他们想要的数据集,我会将系列信息返回到图表,然后图表将填充模板设置。

我还允许用户动态更改模板设置。例如条形图到线、面积、圆等。他们还可以更改主题。当设置第一个负载时,问题就变成了,我传递的系列信息是:

{
  [name: "string", data: []], 
  [name: "string", data: []]
}

当我在模板更改后检查系列对象时,我看到以下内容添加到对象中:

{
  [name: "string",
   data: [],
   type: "area",
   color: "ff6800",
   ect...   
  ],
  [name: "string",
   data: [],
   type: "area",
   color: "ff6800",
   ect...   
  ],
}

问题变成我可以将我的对象类型修改为正确的选择类型。我什至可以将每个系列的颜色值更改为不同的颜色。但是,因为我使用的是剑道主题,所以图表背景会改变,但系列颜色会不匹配。我可以想出一个函数来选择图表的背景颜色,然后为你的系列选择你想要的颜色。但如果可能的话,我宁愿使用剑道方法。

我还认为,如果我清除该对象并仅使用我传递的设置和数据,它就可以工作。但是,我不想每次更改页面级别时都必须访问数据库,而且我还注意到,即使我创建了一个临时对象,我的对象也被赋予了所有图表属性。

先感谢您!

4

1 回答 1

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.c​​om/forums/dataviz/chart/kendo-chart-dynamic-series.aspx

于 2013-03-29T14:06:34.573 回答