angularjs 从所有窗口添加数据,以在ThingsBoard小部件的条形图中仅显示总和值

i2loujxw  于 2023-11-16  发布在  Angular
关注(0)|答案(1)|浏览(141)

下面是我尝试修改的JS脚本(时间序列):

self.onInit = function() {
    self.ctx.flot = new TbFlot(self.ctx, 'bar');   
    
    console.log("console",self.ctx.data)
}

self.onDataUpdated = function() {
    
   
    //console.log("console",self.ctx.$scope.data[0]) //
    self.ctx.flot.update();
}

self.onLatestDataUpdated = function() {
    self.ctx.flot.latestDataUpdate();
}

self.onResize = function() {
    self.ctx.flot.resize();
}

self.onEditModeChanged = function() {
    self.ctx.flot.checkMouseEvents();
}

self.onDestroy = function() {
    self.ctx.flot.destroy();
}

self.typeParameters = function() {
    return {
        hasAdditionalLatestDataKeys: true
    };
}

字符串
我计划通过复制第一个元素再添加一个数据源:

self.ctx.data.push(self.ctx.data[0]);


然后对所有来源的数据求和,以更新重复元素处的数据,最后仅在条形图中绘制此值。
但是,在复制元素并运行之后,我收到了以下错误:


的数据



我可以看到图表中的数据正在更新,但在我进行数学运算之前,我得到了一个错误。以下是复制数据之前和之后的控制台日志。




我的方法正确吗?我是否应该更新HTML模板并使用$scope
谢谢

3qpi33ja

3qpi33ja1#

您创建重复数据的方式是否存在问题?

self.ctx.data.push(self.ctx.data[0]);

字符串
如日志所示,self.ctx.data[0]是一个对象。这意味着以这种方式复制,您的数据[0]和新的最后一个元素是链接和相同的。当您修改数据[0]时,它会更新最后一个元素,反之亦然。您最好创建一个新对象。也要小心嵌套对象。

相关问题