这可能是错误的方法,但基本上我想创建一个节点,其中一个下拉列表取决于配置节点值。节点Red在Admin UI中获取配置节点值
配置-的test.html
<script type="text/javascript">
RED.nodes.registerType('test-config', {
category: 'config',
defaults: {
token: { value: '' }
}
});
</script>
<script type="text/x-red" data-template-name="test-config">
<div class="form-row">
<label for="node-config-input-token"><i class="icon-tag"></i> Token</label>
<input type="text" id="node-config-input-token" placeholder="Token">
</div>
</script>
配置,test.js
module.exports = function (RED) {
function TestConfig(config) {
RED.nodes.createNode(this, config);
this.token = config.token;
}
RED.nodes.registerType('test-config', TestConfig);
}
所以后来在新的节点,我想这样做:
test-node.html
<script type="text/javascript">
RED.nodes.registerType('test-node', {
defaults: {
token: { value: '', type: 'test-config' },
node: { value: '' }
},
oneditprepare: function() {
var token = ??????;
var nodes = $('#node-input-node');
reloadNodeSelect();
function reloadNodeSelect() {
$.ajax({
url: '--URL--' + token
success: function (res) {
nodes.html('');
for (var i = 0; i < res.obj.length; i++) {
nodes.append($('<option></option>').attr('value', res.obj[i]).text(res.obj[i]));
}
}
});
}
}
});
</script>
<script type="text/x-red" data-template-name="temp-node">
<div class="form-row">
<label for="node-input-node"><i class="icon-tag"></i> Node</label>
<select type="text" id="node-input-node"></select>
</div>
</script>
这种情况是,有一个API使用令牌和Web请求获得节点列表,每个节点都有其自己的单个令牌,API需要针对该特定节点的请求。我还想列出每个节点还有几个附加子项,并允许用户选择给定的测试节点。每个节点的配置不同,使用这些附加选项创建配置节点似乎没有意义。
显然令牌可能只是提供作为测试节点上的文本字段,但这个想法是要限制重复的数量,使配置的目标用户更精简。
使用console.log(this);在oneditprepare()函数内部有一个token属性的值,但它是一个ID,它似乎指向配置节点。但我找不到一种方法来使用它来获得该节点的价值。
令牌: “5a1ab56c.5e478c”
我已经试过RED.nodes.getNode(),但这种方法只可在运行时API中:http://nodered.org/docs/api/runtime/api#getNode
谢谢!