Meteor:尝试将数据从动态表单发送到服务器端方法?

时间:2016-03-05 07:57:11

标签: meteor

我会尽力解释我的问题是什么 - 我会在meteorpad中写下来,但我认为它可能会被删除或删除:/

我有一个带有姓名和电话号码的表单,电话号码字段是动态的,因此用户可以在提交表单之前添加多个电话号码。 提交表单后,“' name'字段通过以下方式发送到服务器:

name = event.target.name.value; 
Meteor.call("insertDetails", name);

然后在服务器中:

Meteor.methods({ 
insertDetails: function (name) { 
  Database.insert({ 
  name: name ...
  })

 Email.send({ text: "Hi " + name + " your phone numbers listed are " + ????

如何使用动态电话号码字段执行此操作,因为用户可以添加10个电话号码,我需要将它们全部发送到服务器并能够在Email.Send中使用它们。

1 个答案:

答案 0 :(得分:0)

在客户端,您可以执行以下操作:

var details= {
    name: event.target.name.value,
    emails: [
        event.target.email1.value,
        event.target.email2.value,
        event.target.email3.value,
        etc.
    ]
}
Meteor.call("insertDetails", details);

我不确定您使用的是哪种电子邮件输入,但无论如何您都可以使用for循环或其他内容来存储使用较少代码输入的确切数量的电子邮件地址。

在服务器端,您只需执行此操作:

Meteor.methods({ 
    insertDetails: function (details) { 
        Database.insert(details);
        var emailText = "Hi " + details.name + ", your phone numbers listed are ";
        for (var i = 0; i < details.emails.length; i++){
            emailText += details.emails[i];
            if (i == details.emails.length - 2){
                emailText += " and ";
            } else if (i != details.emails.length - 1){
                emailText += ", ";
            }
        }
        Email.send({to: '',from: '', text: emailText});
    }
});

由于您已将电子邮件地址存储在客户端的数组中,因此您的方法可以依赖该数组的长度来动态更改生成的消息。 for循环中的两个if语句有助于正确地形成标点符号和句子结构。