Ich versuche, benutzerdefinierte Knoten zu erstellen, experimentiere ich mit sehr einfachen. Ich muss die Eigenschaft des Knotens verwenden, den Wert, der vom Benutzer aus einem Dropdown ausgewählt wurde, um den Wert dieser Eigenschaft mit msg.payload zu senden/auszugeben.Knoten-rot benutzerdefinierter Knoten, Wie wird die Knoteneigenschaft verwendet?
Dies ist die Fehlernachricht in dem Debug-Register:
4/7/2017 21.45.06node: lolo
msg : error
"ReferenceError: $ is not defined"
Dies ist die gewünschte Ausgabe:
"ppp [lolo: m2]"
I die Zeile entfernen mit $ in js-Datei, weil jQuery nicht erkannt wird. Ich benutze diese stattdessen
msg.payload = msg.payload +"[" + nodeName+":"+ node.axis +"]";
aber der Optionswert in der Ausgabe wird anstelle des Wertes von einer der Optionen aus ausgewählten Dropdown undefined:
5/7/2017 11.34.22node: 5aa4aa59.f9fa04
msg.payload : string[19]
"ppp[lolo:undefined]"
Dies ist die HTML-Datei für den Knoten:
<script type="text/javascript">
RED.nodes.registerType('Hello World',{
category: 'Demo',
color: '#ffaaaa',
defaults: {
name: {value:""},
\t \t axis:{value:""}
},
inputs:1,
outputs:1,
icon: "face.png",
label: function() {
return this.name||"Hello World";
}
});
</script>
<script type="text/x-red" data-template-name="Hello World">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tag"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
\t <div class="form-row">
<label for="node-input-axis"><i class="icon-tag"></i> Motor</label>
<!--<input type="text" id="node-input-axis" placeholder="axis">-->
\t \t <select value="" id="node-input-axis" placeholder="axis">
<option value="m1">m1</option>
<option value="m2">m2</option>
<option value="m3">m3</option>
<option value="m4">m4</option>
</select>
</div>
</script>
<script type="text/x-red" data-help-name="Hello World">
<p>A node that increments every time a new message is received and sends Hello World in return.<br/>
</p>
</script>
Dies ist js-Datei für den Knoten:
module.exports = function(RED) {
function helloWorld(config) {
RED.nodes.createNode(this,config);
//var context = this.context();
\t \t var nodeName = this.name;
\t \t var axis = config.axis;
var node = this;
\t \t //var $ = require('jQuery');
\t \t var x = $("#node-input-axis").val();
this.on('input', function(msg) {
\t \t \t msg.payload = msg.payload +"[" + nodeName+":"+ x +"]";
\t \t \t //{payload: nodeName+" "+node.axis};
\t \t \t node.send(msg);
});
\t \t //console.log(value);
}
RED.nodes.registerType("Hello World",helloWorld);
};