【问题标题】:Populate email "to" field with address from reactive-table in Meteor使用 Meteor 中反应表中的地址填充电子邮件“收件人”字段
【发布时间】:2016-12-31 06:41:58
【问题描述】:

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

【问题讨论】:

    标签: email meteor


    【解决方案1】:

    我对其进行了更多修改并通过在新的“外部”帮助函数中设置会话变量来解决它,“外部”因为它只是我设置的一个 var,而不是在 Template.myTemplate.helpers 中:

    var openEmailModal = function(email) {
      Session.set('theEmailAddr', email);
      $('#emailModal').modal('show');
    }
    

    然后我修改了点击事件来调用新的var/function:

    'click .sndLnk': function(e){
        e.preventDefault();     
        var email = $(e.currentTarget).attr('value');       
        openEmailModal(email);
    }
    

    在一天结束时,这似乎很基本,我把它做成了比我想象的要多得多的东西……感谢所有观看的人。

    【讨论】:

      猜你喜欢
      • 2023-02-21
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      相关资源
      最近更新 更多