Node Red在Admin UI中获取配置节点值
Node Red get configuration node value in Admin UI
这可能是错误的方法,但基本上我想创建一个节点,其中一个下拉列表取决于配置节点值。
config 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>
config test.js
module.exports = function (RED) {
function TestConfig(config) {
RED.nodes.createNode(this, config);
this.token = config.token;
}
RED.nodes.registerType('test-config', TestConfig);
}
因此,在新的节点中,我想这样做:
测试节点.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()函数中,有一个令牌属性的值,但它是一个似乎指向配置节点的ID。但我找不到一种方法来使用它来获得该节点的值。
令牌:"5a1ab56c.5e478c"
我尝试过RED.nodes.getNode(),但此方法仅在运行时API中可用:http://nodered.org/docs/api/runtime/api#getNode
谢谢!
要做到这一点,您需要在运行时端实现配置对话框HTML和nodejs代码之间的通信。通常的方法是在nodejs代码中添加一个HTTP端点,并对该端点进行AJAX风格的调用,以填充下拉列表。
在node red nodes git存储库中也有一些类似的例子。一个例子是WeMo节点。
WeMoNG.js
...
RED.httpAdmin.get('/wemoNG/devices', function(req, res) {
res.json(wemo.devices);
});
...
WeMoNG.html
...
oneditprepare: function() {
var devices;
$.getJSON('wemoNG/devices', function(data) {
devices = data;
var devs = Object.keys(data);
if (devs.length !== 0) {
for (var d in devs) {
if (devs.hasOwnProperty(d)) {
$('<option/>',{
'value': devs[d],
'text': data[devs[d]].name
}).appendTo('#node-config-input-device');
}
}
}
});
$('#node-config-input-device').change(function() {
var id = $( "#node-config-input-device option:selected" ).first().val();
if (devices) {
$('#node-config-input-type').val(devices[id].type);
$('#node-config-input-name').val(devices[id].name);
}
});
}
...
相关文章:
- Node Red在Admin UI中获取配置节点值
- 使用Lodash从JSON对象获取特定于环境的配置
- 从数据库中获取配置设置,以便在 Angular 中跨应用程序共享
- 在chrome扩展中获取从后台页面到内容脚本的配置
- jquery-plugin-1配置设置从另一个配置设置获取值
- 仅使用访问令牌在节点中获取Google+用户配置文件
- 是否可以将 Apache 配置为允许浏览器中的 JS 获取服务器目录内容
- 如何从配置文件中获取$var以显示在模板中
- r.js优化器没有从配置中获取
- 如何使用twitter api(js)获取用户配置文件图像
- Magento:在类别页面上获取产品可配置选项
- Chrome身份api获取配置文件信息
- 如何以编程方式获取配置选项
- 在用户登录后在angular中获取用户配置文件
- 在javascript中获取颜色显示配置文件
- 从配置中获取seleniumAddress
- 从配置文件获取变量到浏览器
- 无法使用进程.获取~/中的环境变量.配置文件或~/.Mac中的bash_profile
- 获取requirejs.从Gruntfile配置
- 无法获取配置json文件