使用Meteor中的reactive-table地址填充电子邮件“to”字段

时间:2016-06-09 18:25:49

标签: email meteor

我在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准确显示了我想传递的电子邮件地址,但是如何将其传递给电子邮件模式表单?我假装通过帮手,但也许这是错的?

1 个答案:

答案 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);
}

在一天结束时,这看起来非常基本,我做得比我想的要多得多......感谢所有观看过的人。