【问题标题】:Thingsboard Dashboard Entities table with Entity Views带有实体视图的 Thingsboard 仪表板实体表
【发布时间】:2020-07-10 21:58:30
【问题描述】:

这个问题和Thingsboard Dashboard Custom Action NullInjectorError很像

我使用来自实体别名的数据源设置实体表小部件,例如“'power_sensor' 类型的实体视图”。

这个想法很简单:

  • 如果实体视图的名称是“Powermeter1” - 然后转到仪表板状态 1
  • 否则,如果它被称为“Powermeter2” - 转到仪表板状态 2

现在我要为“On row click”创建自定义操作,但失败了。我想根据entity.service API修改@lee-sangjun的代码如下:

var $injector = widgetContext.$scope.$injector;

$injector.get(widgetContext.entityService.get('entityViewService')).getEntity(entityId.id).subscribe(function(entity) {
        if (entity.name == 'Powermeter1') {
            openDashboardState('energy_state_1')
        }
        else if(entity.name == 'Powermeter2') {
            openDashboardState('water_state_2')
        }
});

function openDashboardState(stateId) {
    var params = {
        entityId: entityId,
        entityName: entityName
    }

    widgetContext.stateController.openState(stateId, params,
        false);
}

但是什么也没发生。我必须做些什么才能让它发挥作用?

【问题讨论】:

    标签: javascript thingsboard


    【解决方案1】:

    我找到的可行解决方案:

    var $injector = widgetContext.$scope.$injector;
    
    $injector.get(widgetContext.servicesMap.get('entityViewService')).getEntityView(entityId.id).subscribe(function(entity) {
        console.log(entity)
        if (entity.name == 'Powermeter1') {
            openDashboardState('energy_state_1')
        }
        else if(entity.name == 'Powermeter2') {
            openDashboardState('water_state_2')
        }
    });
    
    function openDashboardState(stateId) {
        var params = {
            entityId: entityId,
            entityName: entityName
        }
    
        widgetContext.stateController.openState(stateId, params,
            false);
    }
    

    其中“Powermeter1”和“Powermeter2”是实体视图的名称。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-07
      • 2019-03-16
      • 2019-07-11
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多