Как установить значение свойства пользовательского узла из нескольких источников? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу создать пользовательский узел в Node-RED, где у меня есть свойство с предустановленными значениями, перечисленными в раскрывающемся списке.

Далее я хочу добавить в качестве последнего элемента в раскрывающемся списке.вниз, «другой» элемент, где, если он выбран, появится текстовое поле и можно будет ввести пользовательское значение для свойства.

Пока что у меня есть следующее:

<script type="text/x-red" data-template-name="new-node">
  <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-property"><i class="fa fa-tasks"></i> Key</label>
    <select type="text" id="node-input-property" style="width:70%;">
      <option value="value1">value 1</option>
      <option value="value2">value 2</option>
      <option value="value3">value 3</option>
      <option value="other">other</option>
    </select>
  </div>

  <div class="form-row" id="new-property" hidden>
    <label for="node-input-newproperty"> New Property</label>
    <input type="text" id="node-input-newproperty"
  </div>
</script>
<script type="text/javascript">
  RED.nodes.registerType("new-node", {
    category: "function",
    color: "#9dd4ae",
    defaults: {
      name: { value: "" },
      property: { value: "", required: true }
    },
    inputs: 1,
    outputs: 1,
    oneditprepare: function() {
      $("#node-input-property").change(function() {
        const selectedProp = $("#node-input-property").find(":selected").val();
        if (selectedProp == "other") {
          $("#node-input-newproperty").show();
        } else {
          $("#node-input-newproperty").hide();
        }
      });
    }
  });
</script>

Моя проблема в том, что я не могу установить пользовательское значение для свойства из-за this :

Для каждого из свойств вмассив по умолчанию, он ищет элемент с идентификатором, установленным в node-input- .Затем этот ввод автоматически заполняется текущим значением свойства.Когда диалоговое окно редактирования в порядке, свойство принимает любое значение из входных данных.

Поскольку я использую отдельный входной объект для значения пользовательского свойства, Узел не может подобрать его, так как яне может использовать тот же идентификатор ("node-input-property") для него.

Возможно, есть ли способ установить значение свойства вручную?
Я пытался использовать этот код ниже, но это не такне работает ...

this.property = $("#node-input-newproperty").val()
...