ThingsBoard教程(十五):部件库的点击事件

这把我C 2021-07-24 18:04:04 8769

前言

各位读者好,截止目前,ThingsBoard系列文章已经做了十篇,分别是

上一篇我们简单介绍了tb的一些基本内置函数,通过这些函数我们可以监听仪表盘的缩放,订阅数据的改变,以及是否是手机模式下预览。
本篇文章将进入更加具体的实践,对这个些部件库的api做更加详细的解释,在制作物联网仪表盘中的实践。

本篇文章我们就来演示一下部件库中的事件操作,假如我们的部件上有一个按钮,或者一个div,我们想让这个按钮在点击时,触发一个我们定义的函数。
下面我们就来演示如何做这样一个基本的操作。

创建静态部件

我们创建一个静态部件,
html中写入

<div fxFlex fxLayout="column" style="height: 100%;"
    fxLayoutAlign="space-around stretch">
    <h3 style="text-align: center;">My first static widget.
    </h3>
    <button mat-raised-button color="primary"
        (click)="showAlert()">Click me</button>
    <p (click)="showAlert()">232323</p>
</div>

js中写入

self.onInit = function() {

    self.ctx.$scope.showAlert = function() {
        var alertContent = self.ctx.settings.alertContent;
        if (!alertContent) {
            alertContent = "Content derived from alertContent property of widget settings.";
        }
        window.alert(alertContent);  
    };

}

在设置模式下写入

{
    "schema": {
        "type": "object",
        "title": "Settings",
        "properties": {
            "alertContent": {
                "title": "Alert content",
                "type": "string",
                "default": "Content derived from alertContent property of widget settings."
            }
        }
    },
    "form": [
        "alertContent"
    ]
}

写入后报错,页面大概显示这个样子。
在这里插入图片描述

这里来解释一下 js的部分,
self.onInit() 部件的初始化函数中, 我们定义了一个函数,self.ctx.$scope.showAlert = function() {}
这个函数是定义在 self.ctx.$scope 对象下的,这个地方不能错。
此外,我们需要将我们的函数绑定到部件的dom元素上,是怎样绑定的?
在angular中使用 (click)="showAlert()" 来绑定一个 showAlert() 的函数。

你可以在按钮上添加click事件,也可以在p标签,div标签上添加。同样生效。

在函数 showAlert() 中我们使用 self.ctx.settings 获取了我们的部件配置数据。 即下面这一块json数据
在这里插入图片描述

获取后 使用 window.alert(alertContent); 弹窗显示。 注意这里必须要使用 window.alert。因为在代码编译后,this并不指向window

这便是我们的第一种创建点击事件的方法。除此之外,官方还提供另一种方法来编写事件处理。
下面来看一下。

第二种创建事件

https://thingsboard.io/docs/user-guide/ui/widget-actions/#6-on-html-element-click-only-in-html-cards-and-value-title-widgets

我们创建一个静态部件,保留原始数据不要改动

在这里插入图片描述

点击右下角的红色按钮,进入编辑模式。
在这里插入图片描述

然后点击 部件右上角的 编辑图标

在这里插入图片描述

点击之后进入编辑模式,选中action 的 tab
在这里插入图片描述

在这里插入图片描述

注意这里的名称是 test1
点击添加后
在这里插入图片描述

然后切换到 高级tab下,修改html。 为div增加一个id="test1"

在这里插入图片描述

点击应用修改,保存,运行部件。

在这里插入图片描述

第二种方法可以为动态增加的dom也添加事件监听。

那么本期的内容就到这里。 算是抛砖引玉。
如果文章对你有帮助,欢迎点赞,收藏。谢谢。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 94 2 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • Arthas 2021-11-02 17:27:58
    回复
    self.ctx.settings获取不到设置模式里的json内容
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区