Meter.call()传递变量

时间:2016-02-10 22:32:19

标签: variables meteor methods call

我试图使用Meteor.call()并传入两个变量来完成方法

[\u10000-\uEFFFF]

但是,当我调用该方法时,emailVar和passwordVar不会通过。

[\U00010000-\U000EFFFF]

他们未定义?

1 个答案:

答案 0 :(得分:0)

你称Meteor方法很好,

var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;

可能是你有问题的代码。 event.target指的是发起事件的DOM元素,在本例中是表单。反过来,registerEmailregisterPassword 未定义

请参阅 https://jsfiddle.net/fqp3a1mq/有关使用jQuery获取表单数据的概述。

在您的具体问题的背景下,一个干净的解决方案是:

Template.form.events({
  'submit form'(event) {
    const $form = $(event.target);
    const formData = $form.serializeArray();
    const params = {};

    event.preventDefault();

    // loop over our form data and create a params object for our method
    formData.forEach(data => {
      params[data.name] = data.value;
    });

    Meteor.call('methodName', params);    
  },
});

Meteor.methods({
  methodName(params) {
    ...
  },
});

使用这种方法,如果您有一个名为registerEmail的输入,那么它将在您的Meteor方法中以params.registerEmail存在。

希望这有帮助。