为作为文档返回的每个数组创建radiobutton组

时间:2016-07-20 18:25:48

标签: meteor nested each

主题是一个返回一些文档的集合。每个文档都有几个字段。其中一个字段是字符串数组。 我试图将字符串数组的值表示为返回的每个文档的单选按钮组。我不能给每个组别一个唯一的名字。我尝试了console.log语句,发现radiobutton组出来很好但后来搞砸了,因为调用助手的次数比返回的文件数多。

我的HTML

<template name=topics>
  {{#each topics}}
    <tr>
      <td><input type="checkbox" name="selectone" id="{{uniqueid}}"/></td>
      <td><textarea rows=4 name="topicname" readonly>{{name}} </textarea></td>
      <td><input type="text" value="{{dateCreated}}" name="datecreated" readonly/></td>
      <td>
        {{#each choices}}

          {{>radiogroup}}

        {{/each}}

      </td>
      <td><a href="#" name="edittopic">Edit</a></td>
    </tr>

  {{/each}}
</template>

<template name='radiogroup'>
  <li><input type=radio name="{{radiogroupname}}" />{{this}}</li>
</template>

我的js:

Template.topics.helpers({
  uniqueid: function() {
    Session.set('topicid',this._id);
    return this._id;
  },
  choices:function() {
    return this.choices;
  },
});

Template.radiogroup.helpers({
  radiogroupname: function() {
    return(Session.get('topicid'));
  },
});

1 个答案:

答案 0 :(得分:1)

这不是Session变量的好用,因为你反复使用它来表示循环内的给定_id。它会不断变化。由于您只需要父对象的_id,因此可以在空格键中使用相对路径表示法在模板中访问它,如下所示:

<template name='radiogroup'>
  <li><input type=radio name="{{../_id}}" />{{this}}</li>
</template>

然后你甚至不需要你的助手。在任何情况下,您都不需要choices帮助,因为choices已经可以迭代。