Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在NodeRED中创建自定义注入节点?_Javascript_Node.js_Node Red - Fatal编程技术网

Javascript 如何在NodeRED中创建自定义注入节点?

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: "

我希望通过单击按钮来启动节点,这样就不必将注入节点放在前面。如何在javascript文件中注册一个按钮点击

我尝试将
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并不意味着它是一个仪表板,
节点红色仪表板
节点就是用于此功能的