我正在尝试创建自定义节点,我正在尝试非常简单的一个。我需要使用节点的属性(用户从下拉列表中选择的值)通过 msg.payload 发送/输出该属性的值。
这是调试选项卡中的错误消息:
4/7/2017 21.45.06node: lolo
msg : error
"ReferenceError: $ is not defined"
Run Code Online (Sandbox Code Playgroud)
这是所需的输出:
“ppp[洛洛:m2]”
我删除了 js 文件中带有 $ 的行,因为它无法识别 jQuery。我用这个代替
msg.payload = msg.payload +"[" + nodeName+":"+ node.axis +"]";
Run Code Online (Sandbox Code Playgroud)
但在输出中,选项值未定义,而不是选择下拉列表中选项之一的值:
5/7/2017 11.34.22node: 5aa4aa59.f9fa04
msg.payload : string[19]
"ppp[lolo:undefined]"
Run Code Online (Sandbox Code Playgroud)
这是节点的 html 文件:
4/7/2017 21.45.06node: lolo
msg : error
"ReferenceError: $ is not defined"
Run Code Online (Sandbox Code Playgroud)
这是节点的 js 文件:
msg.payload = msg.payload +"[" + nodeName+":"+ node.axis +"]";
Run Code Online (Sandbox Code Playgroud)
请务必记住,Node-RED 节点的 2 个独立部分在非常不同的位置运行:
.js
文件在 Node-RED 的后端服务器端运行.html
文件在访问用户客户端计算机上的 Node-RED 编辑器的 Web 浏览器中运行。这意味着该.js
文件无法直接访问编辑器配置窗口中的字段,也无法访问 jquery ($
) 表示法。
部署流程时,所有配置变量都会传递到config
变量中的后端。您已经在以下位置访问过该值:
var axis = config.axis;
Run Code Online (Sandbox Code Playgroud)
var x = $("#node-input-axis").val();
所以你可以只使用变量而不是axis
。
您无法使用,因为您在尝试使用它之前node.axis
尚未config.axis
绑定this.axis
或node.axis
例如:
module.exports = function(RED) {
function helloWorld(config) {
RED.nodes.createNode(this,config);
//var context = this.context();
var nodeName = this.name;
this.axis = config.axis;
var node = this;
this.on('input', function(msg) {
msg.payload = msg.payload +"[" + nodeName+":"+ node.axis +"]";
//{payload: nodeName+" "+ node.axis};
node.send(msg);
});
//console.log(value);
}
RED.nodes.registerType("Hello World",helloWorld);
};
Run Code Online (Sandbox Code Playgroud)