javascript - 带有实体视图的 Thingsboard 仪表板实体表
问题描述
此问题与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);
}
但什么也没有发生。我必须做些什么才能让它工作?
解决方案
我发现的工作解决方案:
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”是实体视图的名称。希望它会有所帮助。
推荐阅读
- c++ - 如何保存数组并在 C++ 上打印它们
- csv - 为 grafana 的 influx 上传器设置带注释的 csv
- django - Django 3.1.7 模型自定义约束
- git - 如何通过 git 从意外撤消 Android Studio 中的工作中恢复?
- python-3.x - 如何使用 FTP 服务器和 django rest api 上传文件....怎么做?
- expression - 报表生成器表达式 IIF 值包含其他值
- flutter - E/MethodChannel#com.viztushar.flutter.flutter_stickers_internet/sharedata(28013):处理方法调用失败
- r - R查找由mutate()中另一列的值定义的列的值
- mysql - 如何根据来自 T1 的数据返回 T2 名称?
- powershell - 通过 Powershell 更改设置“StartWhenAvailable”