Javascript 如何在NodeRED中创建自定义注入节点?
我希望通过单击按钮来启动节点,这样就不必将注入节点放在前面。如何在javascript文件中注册一个按钮点击 我尝试将Javascript 如何在NodeRED中创建自定义注入节点?,javascript,node.js,node-red,Javascript,Node.js,Node Red,我希望通过单击按钮来启动节点,这样就不必将注入节点放在前面。如何在javascript文件中注册一个按钮点击 我尝试将node.on(“input”,异步函数(msg){/*some code*/})放在javascript文件中,在其中注册我的节点。我可以通过以下方式添加此按钮: //HTML file script <script type="text/javascript"> RED.nodes.registerType('light', { category: "
node.on(“input”,异步函数(msg){/*some code*/})
放在javascript文件中,在其中注册我的节点。我可以通过以下方式添加此按钮:
//HTML file script
<script type="text/javascript">
RED.nodes.registerType('light', {
category: "input",
color: "#f3c12b",
defaults: {
name: {value: ""},
plus: {value: ""},
topic: {value: this.name},
payload: {value: ""}
},
inputs: 0,
outputs: 1,
label: function(){
return "Licht '"+this.name+"'" || "Licht";
},
button: {
enabled: function(){
return true;
},
onclick: function(){
//I´ve put the code here, but then I have to reconfigure my functions
}
}
});
</script>
//Javascript file --> register function
//Not getting any response
node.on("input", async function(msg) {
msg = {};
msg.topic = this.topic;
msg.payload = "This is a new message!";
node.send(msg);
});
//HTML文件脚本
RED.nodes.registerType('light'{
类别:“输入”,
颜色:“f3c12b”,
默认值:{
名称:{值:},
加:{值:},
主题:{value:this.name},
有效负载:{值:}
},
投入:0,
产出:1,
标签:函数(){
返回“Licht'”+this.name+“'”| |“Licht”;
},
按钮:{
已启用:函数(){
返回true;
},
onclick:function(){
//我把代码放在这里,但是我必须重新配置我的函数
}
}
});
//Javascript文件-->寄存器函数
//没有得到任何回应
on(“输入”,异步函数(msg){
msg={};
msg.topic=this.topic;
msg.payload=“这是一条新消息!”;
node.send(msg);
});
我希望,当我单击此按钮时,节点正在发送消息,但节点没有任何响应。这里最好的办法是查看注入节点源代码。 对于inject节点,HTML文件中button参数的onclick函数实际上对服务器上的
/inject/{id}
执行POST调用
onclick: function() {
...
var node = this;
$.ajax({
url: "inject/"+this.id,
type:"POST",
success: function(resp) { ... }
});
}
在服务器上运行的InjectJS文件在/inject/:id
处托管一个http端点,调用该端点时,该端点按id获取节点,并调用node.receive()
,该端点充当其输入的触发器
module.exports = function(RED) {
...
RED.httpAdmin.post("/inject/:id", RED.auth.needsPermission("inject.write"), function(req,res) {
var node = RED.nodes.getNode(req.params.id);
...
node.receive();
...
});
}
您看过inject节点在这种情况下的功能了吗?另外,如果您想显示一组按钮来表示打开/关闭指示灯,则node RED editor并不意味着它是一个仪表板,
节点红色仪表板
节点就是用于此功能的