0

此代码用于在接收数据时更新图表

GraphChannel.on("data", function (newdata) {
    var newdataobj = JSON.parse(newdata), updateGraph = "#graph"+newdataobj.ID, updateData = "data"+newdataobj.ID, updateOptions = "options"+newdataobj.ID;
    incrementArray(newdataobj.ID, newdataobj.Data);
    $.plot(updateGraph, [ updateData ], updateOptions);
    console.log(newdataobj);
    console.log(updateGraph);
    console.log(updateData);
    console.log(updateOptions);
});

控制台日志是:

Object {ID=0, Data=1}
#graph0
data0
options0

如果我删除变量并使用 0 作为 ID 并使用 1 作为数据,代码应如下所示:

GraphChannel.on("data", function (newdata) {
    incrementArray(0, 1);
    $.plot("#graph0", [ data0 ], options0);
});

我不确定为什么这不起作用

递增数组:

function incrementArray(array, letter){
for(var i = 0; i < array.length; i++){
    var subArray = array[i];
    if(subArray[0] == letter){
        subArray[1]++;
        return;
    }
}
}
4

1 回答 1

0

唯一的方法是使用eval(). 但这不是一个好习惯。

一个好的做法是使用数组:

// Store all your data in an array
var data = [
    'data for plot 0',
    'data for plot 1'
]

// Store all your options in an array
var options [
    {
        //options for plot 0
    },
    {
        //options for plot 1
    }
]

然后,当您想要 plot 0 的数据时,您可以使用:

data[0];

// In your case
var updateData = data[newdataobj.ID];

所以你的代码变成了这样:

GraphChannel.on("data", function (newdata) {
    var newdataobj = JSON.parse(newdata)
    var updateGraph = "#graph"+newdataobj.ID;
    var updateData = data[newdataobj.ID];
    var updateOptions = options[newdataobj.ID];

    //incrementArray(newdataobj.ID, newdataobj.Data); This function does nothing?

    $.plot(updateGraph, [ updateData ], updateOptions);
});

但我觉得还是有些不对劲。您说要在收到数据时更新绘图。但是您不应该使用新数据放入图表吗?而不是使用已经存储在文档中的现有数据。

如果我考虑到这一点,我认为你的整体代码应该是这样的:

var options [
    {
        //options for plot 0
    },
    {
        //options for plot 1
    }
]

GraphChannel.on("data", function (newdata) {
    var newdataobj = JSON.parse(newdata)
    var updateGraph = "#graph"+newdataobj.ID;
    var updateOptions = options[newdataobj.ID];

    // Use the newdataobj.Data:
    $.plot(updateGraph, [ newdataobj.Data ], updateOptions);
});
于 2013-07-26T17:21:31.473 回答