【问题标题】:Thingsboard_Navigate to new dashboard state_Widget Custom action_Javascript codeThingsboard_导航到新仪表板状态_Widget 自定义操作_Javascript 代码
【发布时间】: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 :)
  • 很高兴听到您发现了问题!编码愉快!

标签: javascript widget dashboard thingsboard


【解决方案1】:

最后它可以与 'device.name' 一起使用。这是一个拼写错误。 现在,我在代码中发现了那些区分大小写的错误并纠正了它。

最好的问候, 唐加拉吉

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多