Thingsboard_导航到新仪表板状态_Widget 自定义操作_Javascript 代码
Posted
技术标签:
【中文标题】Thingsboard_导航到新仪表板状态_Widget 自定义操作_Javascript 代码【英文标题】:Thingsboard_Navigate to new dashboard state_Widget Custom action_Javascript code 【发布时间】:2019-07-06 05:00:51 【问题描述】:是否有任何人有自定义操作 javascript 代码来导航到新的仪表板状态,以在单击相同设备类型的各种设备的不同工具提示(地图)时导航到不同的仪表板状态。
在我的情况下:我有三个恒温器,我需要处理这三个恒温器上的操作应该打开不同的仪表板状态,但是所有设备的 device.type 都是相同的。(恒温器)
我从仪表板指南视频第 2 部分复制了代码,只是将变量“device.type 更改为 device.name”,但它不起作用。应该有另一种方法来使用 If 条件(表示特定设备名称的变量或关键字)。
我也尝试过使用 'entityName'、'device.entityName'、'device.Name'、'entityID'、device.entityID 等,但到目前为止没有任何效果。
自定义操作代码:
var $injector = widgetContext.$scope.$injector;
$injector.get('deviceService').getDevice (entityID.id).then(function(device)
if (device.name == 'thermostat1')
openDashboardState ('Thermostat1');
else if (device.name == 'thermostat2')
openDashboardState('Thermostat2');
else if (device.name == 'thermostat3')
openDashboardState('Thermostat3');
);
function openDashboardState(stateId)
var params =
entityId: entityId,
entityName: entityName
;
Widgetcontext.statecontroller.openState(stateId, params, false);
我是 Javascript 和前端开发的初学者。 Thingsboard 中的任何 JS 开发人员或专家可以帮助我吗?会很棒的。
提前谢谢你。
最好的问候,
唐兹
【问题讨论】:
您好,欢迎来到 SO!我想我们需要更具体地说明“它不起作用” :) 您的浏览器的开发工具日志中是否有任何错误消息?通过使用deviceService
,您正在向服务器执行http 请求。这可能不是必需的,因为您可能已经在小部件的数据源中拥有设备数据(它们显示在地图中)。
您好,实际上JS代码中有一些区分大小写的错误,我已经更正了,现在可以正常使用了。使用“device.name”。非常感谢你的回复。问候,Thangz :)
很高兴听到您发现了问题!编码愉快!
【参考方案1】:
最后它可以与 'device.name' 一起使用。这是一个拼写错误。 现在,我在代码中发现了那些区分大小写的错误并纠正了它。
最好的问候, 唐加拉吉
【讨论】:
以上是关于Thingsboard_导航到新仪表板状态_Widget 自定义操作_Javascript 代码的主要内容,如果未能解决你的问题,请参考以下文章
ThingsBoard开源物联网平台智慧农业实例快速部署教程(UbuntuCentOS适用)
构建仪表板时引发了以下_CastError(脏,依赖项:[MediaQuery],状态:DashboardState#783ce):