Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Drop down menu 节点红色自定义节点,在下拉列表中填充动态值。在打开节点上显示选定值。支持相同类型的多个节点_Drop Down Menu_Node Red - Fatal编程技术网

Drop down menu 节点红色自定义节点,在下拉列表中填充动态值。在打开节点上显示选定值。支持相同类型的多个节点

Drop down menu 节点红色自定义节点,在下拉列表中填充动态值。在打开节点上显示选定值。支持相同类型的多个节点,drop-down-menu,node-red,Drop Down Menu,Node Red,节点红色自定义节点,1下拉字段动态显示数据库中的值。 用户可以选择任何值并保存节点。 当用户重新打开同一节点时,下拉列表应显示以前选择的值。 它只在一个节点中工作。 但是,如果我们放置多个相同类型的节点,它在所有节点中显示相同的值 原因是存储在oneditprepare函数外部使用的选定值全局变量。 当用户想要使用许多相同类型的节点时,由于全局变量的原因,全局变量在不同的节点中显示相同的值 如何解决这个问题 我也看了看 另一方面,我认为解决这个问题的方法如下。 节点在侧栏信息中显示值。我们可以从

节点红色自定义节点,1下拉字段动态显示数据库中的值。 用户可以选择任何值并保存节点。 当用户重新打开同一节点时,下拉列表应显示以前选择的值。 它只在一个节点中工作。 但是,如果我们放置多个相同类型的节点,它在所有节点中显示相同的值

原因是存储在oneditprepare函数外部使用的选定值全局变量。 当用户想要使用许多相同类型的节点时,由于全局变量的原因,全局变量在不同的节点中显示相同的值

如何解决这个问题

我也看了看

另一方面,我认为解决这个问题的方法如下。 节点在侧栏信息中显示值。我们可以从中获取值并将其分配给下拉列表。但这种情况下的问题是,我们必须用oneditprepare编写代码,以便为下拉列表赋值

和侧栏属性在完成执行oneditprepare后获取值

谢谢

上述说明的代码:

oneditprepare:

// ajax call to database to fetch values
$.ajax({
    url: solrUrl,
    method: 'GET',
    dataType: "json",
    contentType: "application/json",
    success: function(data) {
        for(var i=0;i<list.length;i++) // Assume list has all values fetched from db
        {
            var dbVal = list[i];
            var newOption = $('<option value="'+dbVal+'">'+dbVal+'</option>'); // Add all values to the dropdown list
            $("#node-input-toolId").append(newOption);
        }

        // This will show default toolId selected previously
        if(globalToolId != null && globalToolId != '')
        {
            $("#node-input-toolId").val(globalToolId);
        }
    }
});

// On change of toolId2, save selected Tool Id in global variable.
$('#node-input-toolId2').change(function(e){
    globalToolId = $('#node-input-toolId').val();
});

解决这个问题的通常方法是定义一个存储选择的方法。这样,每个节点都可以有自己的选定值


是的,这意味着您需要在oneditprepare中有一些代码,以便从动态生成的列表中设置所选的值——但这就是它的工作方式;这不是一个“问题”。此外,如果使用全局变量,则必须有一些代码来执行相同的任务。

我可以在一个节点中填充动态值。对于多个节点,它对所有节点采用相同的值,这是不正确的,因为使用了全局变量。我也在使用节点属性。没有看到具体的代码,我不知道还能说什么。如果使用节点属性,则每个节点都有自己的值。如果使用单个全局值,则所有节点都将具有该全局值。如果这是您所问问题的原因,为什么要使用全局变量呢?我添加了代码。将DB保存到节点后,代码将从DB中填充动态值。但如果使用全局变量,则1值将引用到所有相同类型的节点。如何解决这个问题?谢谢。如果不使用全局变量,我如何将动态值填充到下拉列表中?是否有其他方法可以获取以前选择的值?请参考代码。谢谢。我不明白为什么你不把它存储为节点实例属性。这不是一个进行这种讨论的好地方。我可以建议你在nodered.org上发布Node红色论坛链接,以便进行适当讨论吗?
// ajax call to database to fetch values
$.ajax({
    url: solrUrl,
    method: 'GET',
    dataType: "json",
    contentType: "application/json",
    success: function(data) {
        for(var i=0;i<list.length;i++) // Assume list has all values fetched from db
        {
            var dbVal = list[i];
            var newOption = $('<option value="'+dbVal+'">'+dbVal+'</option>'); // Add all values to the dropdown list
            $("#node-input-toolId").append(newOption);
        }

        // This will show default toolId selected previously
        if(globalToolId != null && globalToolId != '')
        {
            $("#node-input-toolId").val(globalToolId);
        }
    }
});

// On change of toolId2, save selected Tool Id in global variable.
$('#node-input-toolId2').change(function(e){
    globalToolId = $('#node-input-toolId').val();
});