Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.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 节点化从上一个节点输出的消息负载填充节点表单_Javascript_Node.js_Node Red - Fatal编程技术网

Javascript 节点化从上一个节点输出的消息负载填充节点表单

Javascript 节点化从上一个节点输出的消息负载填充节点表单,javascript,node.js,node-red,Javascript,Node.js,Node Red,我有两个自定义节点,它们连接到Web服务,以使用原子ID提取数据。我想用一个节点拉入所有项(json有效载荷数组),添加到msg有效载荷,并使用该有效载荷.on(“输入”)在第二个节点的html中填充配置表单 module.export = (RED) => { let data = []; const getAllNode = () => { // promised data returned data = service.getAll

我有两个自定义节点,它们连接到Web服务,以使用原子ID提取数据。我想用一个节点拉入所有项(json有效载荷数组),添加到msg有效载荷,并使用该有效载荷.on(“输入”)在第二个节点的html中填充配置表单

module.export = (RED) => {
    let data = [];
    const getAllNode = () => {
       // promised data returned 
       data = service.getAllData(config);
       let node = this;
        RED.nodes.createNode(node, config);

        node.on('input', (msg) => {
             // simple pseudo but this part works fine
             msg.payload = data;

             node.send(msg);
        })
    }

    RED.nodes.registerType("get-all", getAllNode);
}
根据msg.payload属性设置数据,如下所示

[
     { first: "Bob", last: "Smith", age: 45, id: 241 },
     { first: "Karen", last: "NotThatKaren", age: 32, id: 112 },
     { first: "Latisha", last: "Rhodes", age: 41, id: 742 }
]
在下一个节点中,我想设置一个html(如果可能的话),根据输入的msg负载显示一个仅包含名字的选择框……当.on(“输入”)接收到msg时,是否可以动态更改html

<script type="text/html" data-template-name="some-binding">
    template something here based on a template/data binding??
</script>

基于模板/数据绑定在此处创建模板??

否,您不能根据前一个节点的输入更改显示的设置

此外,每个节点配置应独立于任何其他节点,但它们可以共享配置节点。节点不需要知道流中哪些节点在前/后加速(http in/http out之类的东西通过将响应对象附加到
msg
来解决这个问题)

您必须了解节点的两个部分(HTML、JS)是完全独立的。HTML部分在浏览器中运行,JS部分在后端运行。后端无法访问HTML部件

还值得记住的是,如果您从一个空白画布开始添加第一个节点,然后添加第二个节点并将它们连接在一起,那么在单击deploy之前,它们之间不会传递消息,因此第一个节点无法填充第二个节点

虽然您可以选择使用附加到消息的数据覆盖在HTML中输入的设置,但无法将此数据保留到流的已保存状态


如果节点的配置取决于某个后端系统,则您可以从HTML部分发出HTTP请求以请求每个节点的数据,您可以在
onEditPrepare
回调中发出这些请求,也可以将事件处理程序附加到HTML表单中的项目以按需执行此操作,例如按钮。如果需要,您可以将HTTP路由添加到JS文件中,该文件可以从HTTP调用,以解决跨站点访问问题。有关示例,请参见串口核心节点。

很有意义。谢谢。