ThingsBoard:如何在点击时打开对话框
ThingsBoard: How to open dialog on click
我正在尝试简化 Thingsboard 中的一个功能。当用户单击实体列表的一行(在仪表板内部或外部)时,我想打开一个对话框。
我看到您可以使用 Angular 的 $mdDialog 来执行此操作。但我对 Angular 完全陌生,不知道如何应用它。
我在 github 上找到了这个示例代码:
$mdDialog.show(
$mdDialog.alert()
.parent(angular.element(angular.element(self.ctx.$container))
.clickOutsideToClose(true)
.title('This is an alert title')
.textContent('You can specify some description text in here.')
.ariaLabel('Alert Dialog Demo')
.ok('Got it!')
.targetEvent(evt)
);
所以我在自定义操作中使用了这段代码,但它不会执行任何操作。我如何使用 $mdDialog 在 Thingsboard 中创建一个新的 Popup Window?
在阅读了很多关于 AngularJS 的文章并了解了小部件上下文之后,我了解到您需要将每个服务从 AngularJS 提取到小部件上下文中。
针对这种特殊情况的方法是:
$mdDialog = widgetContext.$scope.$injector.get('$mdDialog')
现在 $mdDialog 可以正常使用了。
[编辑] 在 Thingsboard v3+ 上,他们切换到 UI 的 Angular 9/10 包装器。
要实现对话框,您可以使用:
widgetContext.customDialog.customDialog(htmlTemplate, controller).subscribe()
widgetContext.dialogs.alert(title, body, ok_message).subscribe()
UI 在添加 'Custom Action with HTML' 时有几个示例,可以帮助您弄清楚如何使用它们,而编辑器的 UI 提供了有用的自动完成和文档。
我正在尝试简化 Thingsboard 中的一个功能。当用户单击实体列表的一行(在仪表板内部或外部)时,我想打开一个对话框。 我看到您可以使用 Angular 的 $mdDialog 来执行此操作。但我对 Angular 完全陌生,不知道如何应用它。
我在 github 上找到了这个示例代码:
$mdDialog.show(
$mdDialog.alert()
.parent(angular.element(angular.element(self.ctx.$container))
.clickOutsideToClose(true)
.title('This is an alert title')
.textContent('You can specify some description text in here.')
.ariaLabel('Alert Dialog Demo')
.ok('Got it!')
.targetEvent(evt)
);
所以我在自定义操作中使用了这段代码,但它不会执行任何操作。我如何使用 $mdDialog 在 Thingsboard 中创建一个新的 Popup Window?
在阅读了很多关于 AngularJS 的文章并了解了小部件上下文之后,我了解到您需要将每个服务从 AngularJS 提取到小部件上下文中。 针对这种特殊情况的方法是:
$mdDialog = widgetContext.$scope.$injector.get('$mdDialog')
现在 $mdDialog 可以正常使用了。
[编辑] 在 Thingsboard v3+ 上,他们切换到 UI 的 Angular 9/10 包装器。 要实现对话框,您可以使用:
widgetContext.customDialog.customDialog(htmlTemplate, controller).subscribe()
widgetContext.dialogs.alert(title, body, ok_message).subscribe()
UI 在添加 'Custom Action with HTML' 时有几个示例,可以帮助您弄清楚如何使用它们,而编辑器的 UI 提供了有用的自动完成和文档。