我在Meteor中有一个响应表,列出了用户集合中的用户名和电子邮件地址。我想点击电子邮件地址,弹出一个模式,并在“收件人”字段中填写该电子邮件地址。
带有反应表和电子邮件模式的模板:
<template name="Compete">
{{> reactiveTable class="table table-bordered table-hover" settings=settings }}
{{> emailModalTemplate settings.fields}}
</template>
设置助手:
Template.Compete.helpers({
settings: function(){
if (Meteor.user()){
var col = Meteor.users.find({ }, {fields: {profile:1, emails:1} } );
var email = 'emails.0.address';
return {
collection: col,
showFilter: false,
showNavigation: 'never',
fields: [{
key: 'profile.userName',
label: 'Player'
}, {
key: email,
label: 'Email',
fn: function(email){
return new Spacebars.SafeString(
'<a href="#" class="sndLnk" value="'+email+'">'+email+'</a>'
);
}
}]
};
}
},
这是电子邮件模式模板:
<template name="emailModalTemplate">
<div class="modal fade" id="emailModal">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Send Email</h4>
</div>
<div class="modal-body">
<form role="form" id="email-form">
<input type="email" id="inputEmail" placeholder="{{addToAddr}}">
<input type="text" id="inputSubject" placeholder="Subject">
<textarea id="inputBody" rows="5" placeholder="Message"></textarea>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Send</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
</form>
</div>
</div>
</div>
</div>
</template>
此时,{{addToAddr}}帮助程序只是控制台记录“this”,但我可以获得的只是来自反应表设置的实际键,而不是值。我通过传递反应表助手来传递正确的东西吗?
我还可以传递给电子邮件模式模板以获取实际的电子邮件值,然后我可以使用它来填充电子邮件地址字段?
编辑:最后要添加的注意事项: 我的点击事件如下:
'click .sndLnk': function(e){
e.preventDefault();
console.log( $(e.currentTarget).attr('value') );
$('#emailModal').modal('show');
}
这里的console.log准确显示了我想传递的电子邮件地址,但是如何将其传递给电子邮件模式表单?我假装通过帮手,但也许这是错的?
答案 0 :(得分:0)
我通过更多修改并通过在新的&#34;外部&#34;中设置会话变量来解决它。辅助功能,&#34;外部&#34;因为它只是我设置的var,而不是在Template.myTemplate.helpers中:
var openEmailModal = function(email) {
Session.set('theEmailAddr', email);
$('#emailModal').modal('show');
}
然后我修改了click事件以调用新的var / function:
'click .sndLnk': function(e){
e.preventDefault();
var email = $(e.currentTarget).attr('value');
openEmailModal(email);
}
在一天结束时,这看起来非常基本,我做得比我想的要多得多......感谢所有观看过的人。