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 仪表板的视频源

ThingsBoard开源物联网平台智慧农业实例快速部署教程(UbuntuCentOS适用)

构建仪表板时引发了以下_CastError(脏,依赖项:[MediaQuery],状态:DashboardState#783ce):

thingsboard在window部署

thingsboard在window部署

thingsboard在window部署