Twitter bootstrap 使用引导下拉菜单通过Meteor将Mongo文档关联到另一个文档

Twitter bootstrap 使用引导下拉菜单通过Meteor将Mongo文档关联到另一个文档,twitter-bootstrap,meteor,Twitter Bootstrap,Meteor,在我的Meteor应用程序中,我正在努力使用我的项目的ID将它们彼此关联起来。在下面的代码中,假设我试图通过从所有可用项的下拉列表中选择父项,使一个项成为另一个项的“子项” 目前,我将另一个项目的名称与一个项目关联起来没有问题。不幸的是,由于名称不一定是唯一的,我想在从下拉列表中选择另一个项目的名称后,将该项目与另一个项目的_id相关联。我有两个主要问题: 1) 如何在选择列表中设置默认值,以便选择任何名称都会导致“更改”事件 2) 如何让“t”参数引用父项的模板而不是当前模板,以便获取其数据

在我的Meteor应用程序中,我正在努力使用我的项目的ID将它们彼此关联起来。在下面的代码中,假设我试图通过从所有可用项的下拉列表中选择父项,使一个项成为另一个项的“子项”

目前,我将另一个项目的名称与一个项目关联起来没有问题。不幸的是,由于名称不一定是唯一的,我想在从下拉列表中选择另一个项目的名称后,将该项目与另一个项目的_id相关联。我有两个主要问题:

1) 如何在选择列表中设置默认值,以便选择任何名称都会导致“更改”事件

2) 如何让“t”参数引用父项的模板而不是当前模板,以便获取其数据

现在的代码:

Mongo对象架构:

{"items":[{
  itemText: ,
  createdAt: ,
  createdBy: ,
  checked: ,
  itemTags: [],
]};
单个项目的HTML-items-list.HTML使用{{#each}}呈现所有项目:

<template name="item">
  <form class="form-inline assign-parent">
    <select class="form-control" name="text">
      {{#each parentItems}}
      {{> parentItem}} // This does return itself but I can fix that :)
      {{/each}}
    </select>
    <button class="btn btn-default" type="submit">Submit</button>
  </form>
</template>

<template name="parentItem">
  <option>{{itemText}}</option>
</template>
Template.item.helpers({
  parentItems: function() {
    var currentUserId = Meteor.userId();
    return Items.find({checked: false});
  }
});

Template.item.events({
  'change .assign-parent': function(event, t) {
    event.preventDefault();

    var selectedParentId = t.data._id;

    Items.update(this._id, {$set: {itemParentId: selectedParentId}});

    return false;
  },
});
1) 如何设置默认值

在这里,它取决于您实际想要什么,您可以轻松添加一个标签,如“选择一个…”,如下所示:

<select class="form-control" name="text">
  <option disabled selected>Pick one</option>
  {{#each parentItems}}
    {{> parentItem}}
  {{/each}}
</select>

这实际上是两个完全不同的问题。请坚持每个问题一个问题:-)。另外,你的标题也不是很好,因为实际上你最后说,你知道如何去做你在标题中要求的事情,但你正在为其他细节而挣扎。我会回答的更少。但请尽量明确你需要什么,每个问题只回答一个问题。
<template name="parentItem">
  <option id="{{_id}}">{{itemText}}</option>
</template>
Template.item.events({
  'change .assign-parent': function(event) {
    var selectedParentId = $(event.target).find(":selected").attr("id");
    Items.update(this._id, {$set: {itemParentId: selectedParentId}});
  },
});