Drop down menu 节点红色自定义节点,在下拉列表中填充动态值。在打开节点上显示选定值。支持相同类型的多个节点
节点红色自定义节点,1下拉字段动态显示数据库中的值。 用户可以选择任何值并保存节点。 当用户重新打开同一节点时,下拉列表应显示以前选择的值。 它只在一个节点中工作。 但是,如果我们放置多个相同类型的节点,它在所有节点中显示相同的值 原因是存储在oneditprepare函数外部使用的选定值全局变量。 当用户想要使用许多相同类型的节点时,由于全局变量的原因,全局变量在不同的节点中显示相同的值 如何解决这个问题 我也看了看 另一方面,我认为解决这个问题的方法如下。 节点在侧栏信息中显示值。我们可以从中获取值并将其分配给下拉列表。但这种情况下的问题是,我们必须用oneditprepare编写代码,以便为下拉列表赋值 和侧栏属性在完成执行oneditprepare后获取值 谢谢 上述说明的代码: oneditprepare:Drop down menu 节点红色自定义节点,在下拉列表中填充动态值。在打开节点上显示选定值。支持相同类型的多个节点,drop-down-menu,node-red,Drop Down Menu,Node Red,节点红色自定义节点,1下拉字段动态显示数据库中的值。 用户可以选择任何值并保存节点。 当用户重新打开同一节点时,下拉列表应显示以前选择的值。 它只在一个节点中工作。 但是,如果我们放置多个相同类型的节点,它在所有节点中显示相同的值 原因是存储在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();
});