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