如何通过Meteor中的#each块传递收集信息?

时间:2014-05-01 16:07:49

标签: javascript meteor spacebars meteor-collections

我正在使用Meteor Collection Cases中的不同项目填充下拉菜单。

  <select id="caseChoice">
   {{#each case}}
     <option>{{name}}</option>
   {{/each}}
  </select>

我得到了选择的价值,又名:

 var caseName = document.getElementById("caseChoice").value;

我可以使用以下方法检索案例的ID:

 var caseID = Cases.findOne({name:caseName})._id;

但是我计划让用户创建具有相同名称的案例。他们是否可以通过{{each}}传递ID而不在下拉选项中显示_id

1 个答案:

答案 0 :(得分:2)

如果您希望每个html标记都包含id,则可以使用选项的value属性,或者使用html5数据属性:

{{#each case}}
  <option value="{{_id}}" data-id="{{_id}}">{{name}}</option> // can use value= or data-id=
{{/each}}

这将在浏览器的源代码中显示,但不会在屏幕上显示给用户。或者,如果您想通过模板事件访问id,它也可以在那里使用:

"click option" /*or whatever event handler is appropriate here*/: function(event, template){
  var id = template.data._id;
  /* alternatively you can call this._id which will generally give you the same result */
  /* then do your event handling, etc. */ 
}