此代码用于在收到数据时更新图表
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;
}
}
}
答案 0 :(得分: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
}
]
然后,当您想要绘图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);
});