我有两个Collection:一个包含B ID数组的集合A.
模板A:
<template name="templateA">
Name : {{name}} - {{_id}}
{{#each allBsOfThisA}}
{{> Bdetail}}
{{/each}}
<a href="{{pathFor 'Bsubmit'}}">Add B for this A</a>
</template>
注意:在此模板A中,我列出了所有A及其详细信息。在A的底部,我推出了一个添加B的链接。
Bsubmit的模板:
<div class="form-group {{errorClass 'nameOfB'}}">
<label class="control-label" for="nameOfB">nameOfB</label>
<div class="controls">
<input name="nameOfB" id="nameOfB" type="text" value="" placeholder="nameOfB" class="form-control"/>
<span class="help-block">{{errorMessage 'nameOfB'}}</span>
</div>
</div>
<input type="submit" value="Submit" class="btn btn-primary"/>
在Bsubmit脚本上:我想获得A的ID。我尝试使用 template.data._id ,但它无效:
Template.Bsubmit.events({'submit form': function(e, template) {
e.preventDefault();
console.log("template.data._id: " + template.data._id);
var B = {
name: $(e.target).find('[name=name]').val(),
AId : template.data._id
};
}
});
编辑:
BSubmit的铁路由器部分:
Router.route('Bsubmit ', {name: 'Bsubmit '});
答案 0 :(得分:1)
模板和路线都不知道其他模板/路线的A实例。
所以一个解决方案是将id传递给路由,这允许你直接获取实例或使用id:
<template name="templateA">
Name : {{name}} - {{_id}}
{{#each allBsOfThisA}}
{{> Bdetail}}
{{/each}}
<a href="{{pathFor 'Bsubmit' _id=_id}}">Add B for this A</a>
</template>
More information about passing arguments to a route
Router.route('/Bsubmit/:_id', function () {
var a = A.findOne({_id: this.params._id});
this.render('Bsubmit', {data: a});
});
然后你可以在事件中使用template.data._id。
另一个解决方案是将表单嵌入到另一个视图中,这样您就可以访问其中的父模板的数据(documentation of parentData)。