node-red - Node-red:全局变量的问题
问题描述
我必须使用全局或流持久变量,并且在某些用途上遇到了麻烦:在简单函数中使用它时没问题,我有一个很好的返回消息和良好的 vakue(使用 .set 或 .get)但是当我尝试获取脚本中的变量以将其发送到 html 页面它不起作用!(使用相同的语法)
一个主意 ?下面是我的节点红色
[{"id":"1aed4db1.318612","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"8165070c.f8bec8","type":"template","z":"1aed4db1.318612","name":"html","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\"/>\n \n \n </head>\n <body onload=\"draw();\">\n <canvas id=\"canvas\" width=\"500\" height=\"500\"></canvas>\n <script>{{{payload.draw}}}</script>\n </body>\n</html>\n\n\n\n","output":"str","x":410,"y":200,"wires":[["e46f2202.f0adb"]]},{"id":"6460da00.6d5c68","type":"http in","z":"1aed4db1.318612","name":"","url":"/test","method":"get","upload":false,"swaggerDoc":"","x":60,"y":200,"wires":[["6d9dba5b.d5a514"]]},{"id":"e46f2202.f0adb","type":"http response","z":"1aed4db1.318612","name":"","statusCode":"","headers":{},"x":630,"y":200,"wires":[]},{"id":"94994060.2fe75","type":"debug","z":"1aed4db1.318612","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":500,"y":140,"wires":[]},{"id":"9a0d36a3.66cc08","type":"function","z":"1aed4db1.318612","name":"","func":"total=flow.get(\"test\");\nmsg.payload=total;\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":140,"wires":[["94994060.2fe75"]]},{"id":"d76ddfb4.1bee6","type":"inject","z":"1aed4db1.318612","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":80,"y":140,"wires":[["9a0d36a3.66cc08"]]},{"id":"946553b2.76d2f","type":"config","z":"1aed4db1.318612","name":"","properties":[{"p":"test","pt":"flow","to":"\"essai\"","tot":"str"}],"active":true,"x":90,"y":80,"wires":[]},{"id":"6d9dba5b.d5a514","type":"template","z":"1aed4db1.318612","name":"Draw","field":"payload.draw","fieldType":"msg","format":"handlebars","syntax":"mustache","template":" function draw() {\n var canvas = document.getElementById(\"canvas\");\n var ctx2 = canvas.getContext(\"2d\");\n ctx2.fillStyle = 'red';\n ctx2.fillRect(10, 10, 50, 50);\n ctx2.fillText(flow.get(\"test\"),200,20);\n }\n","output":"str","x":210,"y":200,"wires":[["8165070c.f8bec8"]]}]
解决方案
好的,我做到了,它可以工作,但部分...
我添加了“essai={{payload}};” 在我的模板中,我从消息中获得了价值,但并非完全如此!例如,如果我在调试输出中发送一个类似 [100,200,300,400] 的数组,这没问题:味精发送的是相同的东西,但在我的模板中我只有第一个元素:“100”......我试图转换它串起来但结果相同..
我如何从“essai={{payload}};”中获取整个数组或值 ? 我在模板节点中的代码:
function draw() {
var essai=[];
essai={{payload}};
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle = 'red';
ctx.fillRect(10, 10, 50, 50);
ctx.fillText(essai, 100,100);
}
以及用于发送消息的功能节点:
var total=[];
total=flow.get("agvs_montage");
msg.payload=total;
return msg;
发送的值为 [100,200,300,400] 并且填充文本仅显示“100”...
推荐阅读
- java - 在 HTTP 请求失败或卡住的情况下恢复/重试
- java - 如何使用 Maven 和 Cucumber 为 JUnit @Before 挂钩定义不同的行为
- vue.js - vuetify 规则功能 - 如何在验证期间访问组件标签?
- kentico - 作为 Kentico 查询的一部分从 API 返回数据
- wordpress - htaccess domain.com/sub 到 sub.domain.com
- nsis - NSIS:从函数调用 MUI_PAGE_LICENSE 但得到“XPStyle 无效”错误
- python - 从父对象自动创建子对象 - Django 1.11
- python - 如何根据 csv 中的列找到前三行?
- php - 如何获取用于另一种 Laravel 方法的 pdf 文档 - PDF
- excel - 我想使用 VBA for Excel 设计一个函数