Pages

ButtonScript

ButtonScript 控件是一个可自定义的小部件,可以通过页面编辑器放置在 HMI 页面的任意位置。顾名思义,该控件旨在响应不同的生命周期事件执行脚本,提供一种灵活的方式直接从接口触发逻辑。

房产

唱片公司

这定义了按钮上显示的文字。它作为面向用户的说明,可以描述按钮的用途或动作。

图片位置

通过URL指定按钮的背景图片。这使得视觉定制不仅限于标准标签,还能提升界面设计。

剧本加载中

当 ButtonScript 控件加载到屏幕上时,该脚本会自动运行。它适合在用户操作前初始化数值或准备条件。

剧本

这是主动作脚本,点击按钮时执行。它可以包含一个或多个预定义命令,用于控制变量、触发操作或影响HMI的其他部分。

剧本关门

当 ButtonScript 控件从视图中移除时(例如页面转换时),该脚本会执行。它可以用于清理、取消订阅变量或重置值。

ButtonScript 命令引用

每个命令都可以在 buttonscript 控件的 Script、Script on Load 或 Script on Close 属性中使用。

可用指令

指挥 描述
elementById('id') 返回具有给定ID的内部对象引用控件
set(value) 将提供的值设置为给定元素(目前仅支持 outputbasic).
append(value) 在当前文本内容中附加字符串,包含一个outputbasic元素。
appendRangeCheck(value, maxRef, minRef) 只有当元素保持在定义的最小最大范围内时,才会附加该值。参考可以是身份证或字面数字。
checkRange(minRef, maxRef, targetId) 如果元素值超出最小最大范围,则禁用目标按钮。
truncate(numChars) 截断outputbasic元素的最后N个字符。
getValue() 它从outputbasic元素中获取值。
setWs(value, connectionId, path) 通过WebSocket向后端发送一个值(使用全局或显式连接和路径).
setWsOnPosition(value, mapName, connectionId, path) 如果索引为0,则将值发送到所有位置,否则使用本地页面索引
evalValue('javascript') 使用当前值执行内联 JavaScript 代码,代码为 this.value.
changeSign() 将元素中的数值乘以-1。
closePopup() 触发当前弹窗关闭。
getCurrentPageIndex() 返回基于路由器URL的当前页面索引。
goToPage(true, pageId, index, forceProceed) 在应用中导航到另一条路由 (/home/pageId).
navigateToPageIndex(pageIndex, mapName, pageId, forceProceed) 使用索引和地图名导航(比goToPage更动态).
submitContainer() 触发当前控件容器的提交。
submitAll() 触发所有小部件的表单提交。
sleep(ms, forceProcess) 暂停脚本执行 '毫秒'毫秒(可选返回 true).
factor(value, multiplier) 将该数值乘以给定的数值。

重要提示: 命令行必须始终以分号结尾;

✅示例

示例 1: 附加值和检查范围

elementById(display_element) .append(8) .checkRange(display_min, display_max, display_submit);

示例 2: 截断值与校验范围

elementById(display_element) .truncate(1) .checkRange(display_min, display_max, display_submit);

示例 3:在 WS 连接中设置值并关闭弹窗

第一行会显示在“display_element”(element properties中outputbasic集合的id)中显示的值。然后它会把它设置成连接绑定。
第二行会关闭弹窗。
elementById(display_element).getValue().setWs(); closePopup();

elementById(display_element).getValue().setWs(); closePopup();
elementById(display_element) .truncate(1) .checkRange(display_min, display_max, display_submit);
elementById(display_element) .append(8) .checkRange(display_min, display_max, display_submit);
factor(value, multiplier)
true
sleep(ms, forceProcess)
submitAll()
submitContainer()
goToPage
navigateToPageIndex(pageIndex, mapName, pageId, forceProceed)
/home/pageId
goToPage(true, pageId, index, forceProceed)
getCurrentPageIndex()
closePopup()
changeSign()
this.value
evalValue('javascript')
setWsOnPosition(value, mapName, connectionId, path)
setWs(value, connectionId, path)
outputbasic
getValue()
outputbasic
truncate(numChars)
checkRange(minRef, maxRef, targetId)
appendRangeCheck(value, maxRef, minRef)
outputbasic
append(value)
outputbasic
set(value)
elementById('id')