2014-11-01 57 views
0

我正在玩chart.js(http://www.chartjs.org)。目前我有一个基于下面的对象的线图。在下面的例子中,从存储为'x'的数组中填充X轴数据。我有两个数据集,它们是我的图表上显示的两条线。在下面的例子中,Y轴数据存储为'y'和'z'。对象和数组:参照第二个对象更改对象属性(chart.js示例)

我想添加一些功能,用户只能显示一个特定的行或两者,如果他们想。

换句话说,在数据集属性中添加或删除对象实例。

我对以下结构的理解:整件事是一个名为data的对象;这有两个属性称为标签和数据集。 datasets属性是对象实例的数组。这是一个有效的思考方式吗?

var data = { 

    labels : x, 
    datasets : [ 
     { 
      fillColor : "rgba(222,223,179,0)", 
      strokeColor : "rgba(222,223,179,1)", 
      pointColor : "rgba(222,223,179,1)", 
      pointStrokeColor : "#fff", 
      data : y 
     }, 

     { 

      fillColor : "rgba(194,95,207,0)", 
      strokeColor : "rgba(194,95,207,1)", 
      pointColor : "rgba(194,95,207,1)", 
      pointStrokeColor : "#fff", 
      data : z 
     }, 

    ] 
} 

我试图通过创建一个dataSetReference对象像下面解决我的问题:

dataSetReference = [ 
    { 
     fillColor : "rgba(222,223,179,0)", 
     strokeColor : "rgba(222,223,179,1)", 
     pointColor : "rgba(222,223,179,1)", 
     pointStrokeColor : "#fff", 
     data : y 
    }, 

    { 

     fillColor : "rgba(194,95,207,0)", 
     strokeColor : "rgba(194,95,207,1)", 
     pointColor : "rgba(194,95,207,1)", 
     pointStrokeColor : "#fff", 
     data : z 
    }, 

] 

然后引用它在我的原始数据对象像

datasets: dataSetReference[0,1] 

或者只是:

datasets: dataSetReference[0] 

T他没有工作。任何建议为什么不呢?

回答

0

你应该知道,非原始类型对象阵列他们的标准操作让我们来简单的例子来说明这一点:

var a = [1,2,3]; 
var b = a; // now b point to the same reference as the a does,meaning any modification to b will be applied to a also 

// for example 
b.push(4); 
console.log(a); // you will get [1, 2, 3, 4] instead of [1, 2, 3] that we are expecting 

//so you can use only : 
datasets: dataSetReference 


//and if you want to access separate items from dataSetReference you can use .slice() method 

    var tmpvar = dataSetReference.slice(0,3,4) // now tmpvar = dataSetReference[0,3,4] 
+0

感谢。任何有关如何在数据集属性中完整选择数组元素然后引用特定项的建议?在我的实际项目中,有8个数据集,因此不想列出所有不同组合的单独对象。 – DVCITIS 2014-11-01 19:10:11

+0

你不想在dataSetReference变量中存储8个数据集(对象数组)吗? – Ismail 2014-11-01 19:31:47

+0

我在想如果我在需要的时候只能参​​考其中的一个或两个,那将是一个体面的方法;你上面的例子表明这是不可能的。现在它看起来像我需要一个由8个对象组成的数组,一个由两个对象组成的数组,一个由三个对象组成的数组等等,并且当需要只有一行时需要单独的对象。许多代码行。 – DVCITIS 2014-11-01 19:34:38