2017-09-01 2 views
0

Je crée des cases à cocher dans une boucle à partir d'une entrée initiale msg.payload (voir le code ci-dessous qui fonctionne). Exemple pour la charge utile entrante: msg.payload = [{ "name": "a"}, { "NOM": "b"}]créer une case à cocher dans le tableau de bord ui_template (node-red) en boucle et affecter check-status à la sortie msg.payload

<form> 
    <fieldset style="width:85%"> 
    <legend>choose chartdata</legend> 
     <div ng-repeat="x in msg.payload"> 
      <input type="checkbox" name={{msg.payload[$index].NAME}}> 
      <label for={{msg.payload[$index].NAME}}>{{msg.payload[$index].NAME}}</label> 
     </div> 
    </fieldset> 
</form> 

Je suis en train d'obtenir une msg.payload de sortie (être poussé vers le flux) pour chaque case à cocher (en cas de changement) qui contient le nom de la case à cocher (ici: "a" ou "b") et le statut (coché/décoché).

Est-ce que quelqu'un sait comment cela pourrait être fait?

p.s .: voici le flux:

[{"id":"3bbd849e.391734","type":"inject","z":"256e6f3d.da9f7","name":"","topic":"","payload":"[{\"NAME\":\"a\"},{\"NAME\":\"b\"}]","payloadType":"json","repeat":"","crontab":"","once":false,"x":341.08331298828125,"y":216.08334350585938,"wires":[["f6bae45e.b99088"]]},{"id":"f6bae45e.b99088","type":"ui_template","z":"256e6f3d.da9f7","group":"34890ec3.1f4b6a","name":"checkbox","order":11,"width":"3","height":"8","format":"<form>\n <fieldset style=\"width:85%\">\n <legend>choose chartdata</legend>\n  <div ng-repeat=\"x in msg.payload\">\n   <input type=\"checkbox\" name={{msg.payload[$index].NAME}}>\n   <label for={{msg.payload[$index].NAME}}>{{msg.payload[$index].NAME}}</label>\n  </div>\n </fieldset>\n</form>","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":513.4889526367188,"y":217.39315795898438,"wires":[[]]},{"id":"34890ec3.1f4b6a","type":"ui_group","name":"Group 1","tab":"a52427c4.c3901","order":1,"disp":true,"width":6},{"id":"a52427c4.c3901","type":"ui_tab","z":"","name":"test","icon":"dashboard","order":12}] 

Répondre

0

ce code semble fonctionner:

<form> 
    <fieldset style="width:85%"> 
    <legend>choose chartdata</legend> 
     <div ng-repeat="x in msg.payload"> 
      <label>{{x.NAME}} 
       <input type="checkbox" style="float:left; position: relative; top: 5px;" 
         ng-model="check" 
         ng-change="send({var:x.NAME, state:check})"> 
      </label> 
     </div> 
    </fieldset> 
</form> 

décocher "passer à travers les messages d'entrée." et "Ajouter des messages de sortie à l'état stocké". dans ui_template